Files
TheGame/packages/web/components/Player/Section/PlayerMemberships.tsx
dan13ram 8517a26048 Upgrade dependencies (#486)
* upgraded storybook dependencies

* upgraded web dependencies

* updated timezone selector

* upgrade chakra in metamaps

* upgraded react-dnd in metamaps

* upgraded framer-motion

* fixed types in metamaps

* upgraded eslint

* upgraded lerna, husky and graphql

* upgraded node version

* removed metamaps package

* fixed all eslint issues

* ran yarn format to prettier format all files

* updated lint-staged & husky scripts

* add executable perms to pre-push scripts

* updated yarn.lock

* fixed eslint and moved chakra icons to ds

* fixed emotion errors

* removed extra useContext

* update yarn.lock

* upgraded more packages

* removed unnecessary .huskyrc.json

* lint fix
2021-05-01 12:46:48 +05:30

104 lines
3.5 KiB
TypeScript

import { Box, Flex, HStack, Text } from '@metafam/ds';
import { PlayerFragmentFragment } from 'graphql/autogen/types';
import React from 'react';
import ethereumImage from '../../../assets/moloch/ethereum.png';
import hausdaoImage from '../../../assets/moloch/hausdao.png';
import metacartelImage from '../../../assets/moloch/metacartel.png';
import metaclanImage from '../../../assets/moloch/metaclan.png';
import metagameImage from '../../../assets/moloch/metagame.png';
import raidGuildImage from '../../../assets/moloch/raid_guild.png';
import { ProfileSection } from '../../ProfileSection';
type Props = { player: PlayerFragmentFragment; onRemoveClick: () => void };
export const PlayerMemberships: React.FC<Props> = ({
player,
onRemoveClick,
}) => {
const [show, setShow] = React.useState(false);
// TODO Probably a better way to do that or should be completed, API/IPFS ?
const getImageMoloch = (title: string) => {
if (title.toLowerCase().includes('hausdao')) return hausdaoImage;
if (title.toLowerCase().includes('metacartel')) return metacartelImage;
if (title.toLowerCase().includes('metaclan')) return metaclanImage;
if (title.toLowerCase().includes('raid guild')) return raidGuildImage;
return ethereumImage;
};
return (
<ProfileSection title="Memberships" onRemoveClick={onRemoveClick}>
<HStack alignItems="center" mb={6}>
<Flex bg="purpleBoxLight" width={16} height={16} mr={6}>
<Box
bgImage={`url(${metagameImage})`}
backgroundSize="cover"
width={12}
height={12}
m="auto"
/>
</Flex>
<Box>
<Text fontSize="md" mb="1">
MetaGame
</Text>
<HStack alignItems="center">
<Text fontSize="xs" casing="capitalize" mr={3}>
{
// TODO Im not 100% sure this should be player.rank ?
}
{(player.rank || '').toLowerCase()}
</Text>
<Text fontSize="xs">
{`XP: ${Math.floor(player.total_xp || 0)}`}
</Text>
</HStack>
</Box>
</HStack>
{
// TODO Fake data => Should be retrieved from DAO
(player.daohausMemberships || [])
.slice(0, show ? 999 : 3)
.map((member) => (
<HStack alignItems="center" mb={6} key={member.id}>
<Flex bg="purpleBoxLight" width={16} height={16} mr={6}>
<Box
bgImage={`url(${getImageMoloch(member.moloch.title || '')})`}
backgroundSize="cover"
width={12}
height={12}
m="auto"
/>
</Flex>
<Box>
<Text fontSize="md" mb="1">
{member.moloch.title}
</Text>
<HStack alignItems="center">
<Text fontSize="xs" casing="capitalize" mr={3}>
player
</Text>
<Text fontSize="xs">
Shares: {member.shares}/{member.moloch.totalShares}
</Text>
</HStack>
</Box>
</HStack>
))
}
{(player.daohausMemberships || []).length > 3 && (
<Text
as="span"
fontFamily="body"
fontSize="xs"
color="cyanText"
cursor="pointer"
onClick={() => setShow(!show)}
>
View {show ? 'less' : 'all'}
</Text>
)}
</ProfileSection>
);
};