add quick-look trade matches to top of page
This commit is contained in:
parent
5a13959805
commit
4d4d475437
2 changed files with 47 additions and 10 deletions
|
@ -1,6 +1,6 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { Badge, Box, Center, Wrap } from "@chakra-ui/core";
|
import { Badge, Box, Center, Wrap } from "@chakra-ui/core";
|
||||||
import { EmailIcon } from "@chakra-ui/icons";
|
import { CheckIcon, EmailIcon, StarIcon } from "@chakra-ui/icons";
|
||||||
import gql from "graphql-tag";
|
import gql from "graphql-tag";
|
||||||
import { useParams } from "react-router-dom";
|
import { useParams } from "react-router-dom";
|
||||||
import { useQuery } from "@apollo/client";
|
import { useQuery } from "@apollo/client";
|
||||||
|
@ -96,6 +96,13 @@ function UserItemsPage() {
|
||||||
const showYouWantThisBadge = (item) =>
|
const showYouWantThisBadge = (item) =>
|
||||||
!isCurrentUser && itemIdsYouWant.has(item.id);
|
!isCurrentUser && itemIdsYouWant.has(item.id);
|
||||||
|
|
||||||
|
const numYouOwnThisBadges = data.user.itemsTheyWant.filter(
|
||||||
|
showYouOwnThisBadge
|
||||||
|
).length;
|
||||||
|
const numYouWantThisBadges = data.user.itemsTheyOwn.filter(
|
||||||
|
showYouWantThisBadge
|
||||||
|
).length;
|
||||||
|
|
||||||
const sortedItemsTheyOwn = [...data.user.itemsTheyOwn].sort((a, b) => {
|
const sortedItemsTheyOwn = [...data.user.itemsTheyOwn].sort((a, b) => {
|
||||||
// This is a cute sort hack. We sort first by, bringing "You want this!" to
|
// This is a cute sort hack. We sort first by, bringing "You want this!" to
|
||||||
// the top, and then sorting by name _within_ those two groups.
|
// the top, and then sorting by name _within_ those two groups.
|
||||||
|
@ -120,29 +127,59 @@ function UserItemsPage() {
|
||||||
<Heading1>
|
<Heading1>
|
||||||
{isCurrentUser ? "Your items" : `${data.user.username}'s items`}
|
{isCurrentUser ? "Your items" : `${data.user.username}'s items`}
|
||||||
</Heading1>
|
</Heading1>
|
||||||
{data.user.contactNeopetsUsername && (
|
<Wrap spacing="2" opacity="0.7">
|
||||||
<Wrap spacing="2" opacity="0.7">
|
{data.user.contactNeopetsUsername && (
|
||||||
<Badge
|
<Badge
|
||||||
as="a"
|
as="a"
|
||||||
href={`http://www.neopets.com/userlookup.phtml?user=${data.user.contactNeopetsUsername}`}
|
href={`http://www.neopets.com/userlookup.phtml?user=${data.user.contactNeopetsUsername}`}
|
||||||
display="inline-flex"
|
display="flex"
|
||||||
alignItems="center"
|
alignItems="center"
|
||||||
>
|
>
|
||||||
<NeopetsStarIcon marginRight="1" />
|
<NeopetsStarIcon marginRight="1" />
|
||||||
{data.user.contactNeopetsUsername}
|
{data.user.contactNeopetsUsername}
|
||||||
</Badge>
|
</Badge>
|
||||||
|
)}
|
||||||
|
{data.user.contactNeopetsUsername && (
|
||||||
<Badge
|
<Badge
|
||||||
as="a"
|
as="a"
|
||||||
href={`http://www.neopets.com/neomessages.phtml?type=send&recipient=${data.user.contactNeopetsUsername}`}
|
href={`http://www.neopets.com/neomessages.phtml?type=send&recipient=${data.user.contactNeopetsUsername}`}
|
||||||
display="inline-flex"
|
display="flex"
|
||||||
alignItems="center"
|
alignItems="center"
|
||||||
>
|
>
|
||||||
<EmailIcon marginRight="1" />
|
<EmailIcon marginRight="1" />
|
||||||
Neomail
|
Neomail
|
||||||
</Badge>
|
</Badge>
|
||||||
</Wrap>
|
)}
|
||||||
)}
|
{numYouOwnThisBadges > 0 && (
|
||||||
<Heading2 marginTop="4" marginBottom="6">
|
<Badge
|
||||||
|
as="a"
|
||||||
|
href="#wanted-items"
|
||||||
|
colorScheme="green"
|
||||||
|
display="flex"
|
||||||
|
alignItems="center"
|
||||||
|
>
|
||||||
|
<CheckIcon marginRight="1" />
|
||||||
|
{numYouOwnThisBadges > 1
|
||||||
|
? `${numYouOwnThisBadges} items you own`
|
||||||
|
: "1 item you own"}
|
||||||
|
</Badge>
|
||||||
|
)}
|
||||||
|
{numYouWantThisBadges > 0 && (
|
||||||
|
<Badge
|
||||||
|
as="a"
|
||||||
|
href="#owned-items"
|
||||||
|
colorScheme="blue"
|
||||||
|
display="flex"
|
||||||
|
alignItems="center"
|
||||||
|
>
|
||||||
|
<StarIcon marginRight="1" />
|
||||||
|
{numYouWantThisBadges > 1
|
||||||
|
? `${numYouWantThisBadges} items you want`
|
||||||
|
: "1 item you want"}
|
||||||
|
</Badge>
|
||||||
|
)}
|
||||||
|
</Wrap>
|
||||||
|
<Heading2 id="owned-items" marginTop="4" marginBottom="6">
|
||||||
{isCurrentUser ? "Items you own" : `Items ${data.user.username} owns`}
|
{isCurrentUser ? "Items you own" : `Items ${data.user.username} owns`}
|
||||||
</Heading2>
|
</Heading2>
|
||||||
<ItemCardList>
|
<ItemCardList>
|
||||||
|
@ -166,7 +203,7 @@ function UserItemsPage() {
|
||||||
})}
|
})}
|
||||||
</ItemCardList>
|
</ItemCardList>
|
||||||
|
|
||||||
<Heading2 marginBottom="6" marginTop="8">
|
<Heading2 id="wanted-items" marginBottom="6" marginTop="8">
|
||||||
{isCurrentUser ? "Items you want" : `Items ${data.user.username} wants`}
|
{isCurrentUser ? "Items you want" : `Items ${data.user.username} wants`}
|
||||||
</Heading2>
|
</Heading2>
|
||||||
<ItemCardList>
|
<ItemCardList>
|
||||||
|
|
|
@ -270,7 +270,7 @@ export function YouOwnThisBadge({ variant = "long" }) {
|
||||||
alignItems="center"
|
alignItems="center"
|
||||||
minHeight="1.5em"
|
minHeight="1.5em"
|
||||||
>
|
>
|
||||||
<CheckIcon aria-label="Star" />
|
<CheckIcon aria-label="Check" />
|
||||||
{variant === "long" && <Box marginLeft="1">You own this!</Box>}
|
{variant === "long" && <Box marginLeft="1">You own this!</Box>}
|
||||||
</ItemBadge>
|
</ItemBadge>
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in a new issue