mirror of
https://github.com/MetaFam/TheGame.git
synced 2026-02-11 14:34:56 -05:00
* added seed-graph as a new remote schema * removed unwanted remote schema and added a query * updated seed-balances remote schema logic * patron leaderboard * refactored player skills & memberships components * removed unnecessary key in tile components * removed getTokenBalance folder * reduced number for calls for fetching patrons * updated logic to use the new backend query * made patron tiles shorter
126 lines
3.4 KiB
TypeScript
126 lines
3.4 KiB
TypeScript
import {
|
|
Avatar,
|
|
Box,
|
|
Heading,
|
|
HStack,
|
|
MetaTag,
|
|
MetaTile,
|
|
MetaTileBody,
|
|
MetaTileHeader,
|
|
Text,
|
|
VStack,
|
|
Wrap,
|
|
WrapItem,
|
|
} from '@metafam/ds';
|
|
import { MetaLink } from 'components/Link';
|
|
import { PlayerContacts } from 'components/Player/PlayerContacts';
|
|
import { PlayerTileMemberships } from 'components/Player/PlayerTileMemberships';
|
|
import { PlayerTileSkills } from 'components/Player/PlayerTileSkills';
|
|
import { PlayerFragmentFragment } from 'graphql/autogen/types';
|
|
import React from 'react';
|
|
import {
|
|
getPlayerCoverImage,
|
|
getPlayerImage,
|
|
getPlayerName,
|
|
} from 'utils/playerHelpers';
|
|
|
|
type Props = {
|
|
player: PlayerFragmentFragment;
|
|
};
|
|
|
|
export const PlayerTile: React.FC<Props> = ({ player }) => {
|
|
return (
|
|
<MetaTile>
|
|
<Box
|
|
bgImage={`url(${getPlayerCoverImage(player)})`}
|
|
bgSize="cover"
|
|
bgPosition="center"
|
|
position="absolute"
|
|
top="0"
|
|
left="0"
|
|
w="100%"
|
|
h="4.5rem"
|
|
/>
|
|
<MetaTileHeader>
|
|
<MetaLink
|
|
as={`/player/${player.username}`}
|
|
href="/player/[username]"
|
|
key={player.id}
|
|
>
|
|
<VStack>
|
|
<Avatar
|
|
size="xl"
|
|
src={getPlayerImage(player)}
|
|
name={getPlayerName(player)}
|
|
/>
|
|
<Heading size="xs" color="white">
|
|
{getPlayerName(player)}
|
|
</Heading>
|
|
</VStack>
|
|
</MetaLink>
|
|
<Wrap w="100%" justify="center">
|
|
{player.playerType?.title ? (
|
|
<WrapItem>
|
|
<MetaTag size="md">
|
|
{player.playerType?.title.toUpperCase()}
|
|
</MetaTag>
|
|
</WrapItem>
|
|
) : null}
|
|
{player.rank && (
|
|
<WrapItem>
|
|
<MetaTag
|
|
backgroundColor={player.rank?.toLowerCase()}
|
|
size="md"
|
|
color="blackAlpha.600"
|
|
>
|
|
{player.rank}
|
|
</MetaTag>
|
|
</WrapItem>
|
|
)}
|
|
<WrapItem>
|
|
<MetaTag size="md">XP: {Math.floor(player.total_xp)}</MetaTag>
|
|
</WrapItem>
|
|
</Wrap>
|
|
{player.box_profile?.description ? (
|
|
<VStack spacing={2} align="stretch">
|
|
<Text fontFamily="mono" fontSize="sm" color="blueLight">
|
|
ABOUT
|
|
</Text>
|
|
<Text fontSize="sm">{player.box_profile.description}</Text>
|
|
</VStack>
|
|
) : null}
|
|
</MetaTileHeader>
|
|
<MetaTileBody>
|
|
{player.Player_Skills.length ? (
|
|
<VStack spacing={2} align="stretch">
|
|
<Text fontFamily="mono" fontSize="sm" color="blueLight">
|
|
SKILLS
|
|
</Text>
|
|
<PlayerTileSkills player={player} />
|
|
</VStack>
|
|
) : null}
|
|
|
|
{player.daohausMemberships.length ? (
|
|
<VStack spacing={2} align="stretch">
|
|
<Text fontFamily="mono" fontSize="sm" color="blueLight">
|
|
MEMBER OF
|
|
</Text>
|
|
<PlayerTileMemberships player={player} />
|
|
</VStack>
|
|
) : null}
|
|
|
|
{player.Accounts.length ? (
|
|
<VStack spacing={2} align="stretch">
|
|
<Text fontFamily="mono" fontSize="sm" color="blueLight">
|
|
CONTACT
|
|
</Text>
|
|
<HStack mt="2">
|
|
<PlayerContacts player={player} />
|
|
</HStack>
|
|
</VStack>
|
|
) : null}
|
|
</MetaTileBody>
|
|
</MetaTile>
|
|
);
|
|
};
|