Files
TheGame/packages/web/components/Player/PlayerContacts.tsx
δυς 317ba7c9e5 Refactor Setup Wizard & Profile Modal Configuration Panes (#1127)
* incorporating configuration panes from #1078

* standardizing player hero subcomponents & removing `owner` var from `useProfileField` 🚪

* switching box type, ambiguating overly-specific names, & massaging heights 📱

* reordering profile details sections, updating deployment environment, & conditionally wrapping the hero elements 🎬

* fixing render of color disposition selector 🕍

* self code review changes: removed some `;`s 🎋

* getting yarn typecheck && yarn lint to pass post rebase 🏇🏾

* handling "missing <div> in <button>" error with mounted check & setting HTTP return codes for OpenSea API endpoint 🕺

* `ProfileWizard` extends `Wizard`, roles display better on mobile, & pronouns use `ProfileWizardPane` 🍊

* properly encapsulating ETH address regex 🚲

* adding some tasks 🏥

* fixed skills layou

* handling default values? 

* corrections for revision comments from @dan13ram (UI bugs to follow) 🌋

* cleaning up memberships & explorer type 🧫

* refactoring player roles configuration and display to use `WizardPane` 🔮

* bunches of mobile fixes & repairing the display of deserialized skills 📟

* removing redirect in static props & formatting memberships display for responsiveness 🪆

* improving comprehensability of `/me` & more mobile tweaking 🍦

* various spacing fixes & a “try again” button for connecting 🫕

* maybe fixed issue with saving images for fields with default values 🇩🇿

* switched roles selection to a bounded `SimpleGrid` to fix sizing weirdness 🧰

* fix: removed verify on brightId button

* fix: clean up username page

* formatting & fixing skills issues 🥩

* reformatting NFT display 🚂

* adding `/join` 🚉

* style: peth's suggestions

* added mainnet required message

* style: slight tweak of megamenu item positions

* chore(release): 0.2.0

Co-authored-by: tenfinney <scott@1box.onmicrosoft.com>
Co-authored-by: dan13ram <dan13ram@gmail.com>
Co-authored-by: vidvidvid <weetopol@gmail.com>
2022-02-28 14:06:16 -05:00

98 lines
2.7 KiB
TypeScript

import { Button, Tooltip, Wrap, WrapItem } from '@metafam/ds';
import { Player } from 'graphql/autogen/types';
import { useCopyToClipboard } from 'lib/hooks/useCopyToClipboard';
import React from 'react';
import { FaEthereum, FaGithub, FaTwitter } from 'react-icons/fa';
import { formatAddress } from 'utils/playerHelpers';
import { PlayerBrightId } from './Section/PlayerBrightId';
type Props = {
player: Player;
disableBrightId?: boolean;
};
export const PlayerContacts: React.FC<Props> = ({
player,
disableBrightId = true, // TODO: enable after fixing issue #1068
}) => {
const [copied, handleCopy] = useCopyToClipboard();
return (
<Wrap justify="center">
{player?.accounts?.map((acc) => {
switch (acc.type) {
case 'TWITTER': {
const link = `https://twitter.com/${acc.identifier}`;
return (
<WrapItem key={link}>
<Button
as="a"
href={link}
target="_blank"
rel="noreferrer noopener"
size="xs"
colorScheme="twitter"
color="white"
leftIcon={<FaTwitter />}
>
{acc.identifier}
</Button>
</WrapItem>
);
}
case 'GITHUB': {
const link = `https://github.com/${acc.identifier}`;
return (
<WrapItem key={link}>
<Button
as="a"
href={link}
target="_blank"
rel="noreferrer noopener"
size="xs"
colorScheme="blackAlpha"
backgroundColor="black"
color="white"
leftIcon={<FaGithub />}
>
{acc.identifier}
</Button>
</WrapItem>
);
}
default: {
return null;
}
}
})}
{player?.ethereumAddress && (
<WrapItem>
<Tooltip
label={copied ? 'Copied!' : 'Copy to clipboard'}
closeOnClick={false}
hasArrow
>
<Button
onClick={(evt) => {
evt.preventDefault();
handleCopy(player.ethereumAddress);
}}
size="xs"
colorScheme="blackAlpha"
leftIcon={<FaEthereum />}
color="white"
>
{formatAddress(player.ethereumAddress)}
</Button>
</Tooltip>
</WrapItem>
)}
{!disableBrightId && (
<WrapItem>
<PlayerBrightId {...{ player }} />
</WrapItem>
)}
</Wrap>
);
};