use discord avatars

This commit is contained in:
Sendou
2020-05-06 02:29:49 +03:00
parent 704b9e0151
commit e3926dce73
24 changed files with 59 additions and 74 deletions

View File

@@ -47,11 +47,11 @@ const TournamentInfo: React.FC<TournamentInfoProps> = ({
</Flex>
<Flex alignItems="center" color={grayWithShade} my="0.5em">
{poster.twitter_name && (
{poster.avatar && (
<Box mr="0.5em">
<UserAvatar
twitterName={poster.twitter_name}
name={poster.username}
src={poster.avatar}
size="sm"
/>
</Box>

View File

@@ -3,24 +3,17 @@ import { Avatar, BoxProps } from "@chakra-ui/core"
interface UserAvatarProps {
name: string
twitterName?: string
src?: string
size?: undefined | "2xl" | "lg" | "xs" | "sm"
}
const UserAvatar: React.FC<UserAvatarProps & BoxProps> = ({
name,
twitterName,
src,
size,
...props
}) => {
return (
<Avatar
name={name}
//src={`https://avatars.io/twitter/${twitterName}`}
size={size}
{...props}
/>
)
return <Avatar name={name} src={src} size={size} {...props} />
}
export default UserAvatar

View File

@@ -94,10 +94,10 @@ const FreeAgentCard: React.FC<FreeAgentCardProps> = ({
</Flex>
<Flex flexDirection="column" alignItems="center" justifyContent="center">
<UserAvatar
twitterName={discord_user.twitter_name}
name={discord_user.username}
mr="5px"
size="lg"
src={discord_user.avatar}
/>
<Box

View File

@@ -15,7 +15,7 @@ interface MatchesProps {
matches: {
username: string
discriminator: string
twitter_name?: string
avatar?: string
}[]
likesReceived: number
}
@@ -56,15 +56,12 @@ const Matches: React.FC<MatchesProps> = ({ matches, likesReceived }) => {
{matches.length > 0 ? (
<>
<Flex justifyContent="center" flexWrap="wrap">
{matches.map(match => (
{matches.map((match) => (
<Box key={`${match.username}${match.discriminator}`} p="0.5em">
<Popover trigger="hover">
<PopoverTrigger>
<Box>
<UserAvatar
twitterName={match.twitter_name}
name={match.username}
/>
<UserAvatar src={match.avatar} name={match.username} />
</Box>
</PopoverTrigger>
<PopoverContent zIndex={4} p="0.5em" bg={darkerBgColor}>

View File

@@ -57,7 +57,7 @@ interface PersonForVotingProps {
user: {
username: string
discriminator: string
twitter_name?: string | undefined
avatar?: string
discord_id: string
}
suggester?: {
@@ -98,7 +98,7 @@ const PersonForVoting: React.FC<PersonForVotingProps> = ({
alignItems="center"
flexDirection="column"
>
<UserAvatar twitterName={user.twitter_name} name={user.username} />
<UserAvatar src={user.avatar} name={user.username} />
<a
target="_blank"

View File

@@ -40,7 +40,7 @@ interface Suggestion {
discord_id: string
username: string
discriminator: string
twitter_name?: string
avatar?: string
}
suggester_discord_user: {
discord_id: string
@@ -60,7 +60,7 @@ interface SuggestionsData {
interface VouchUser {
username: string
discriminator: string
twitter_name: string
avatar?: string
discord_id: string
plus: {
voucher_user: {
@@ -96,7 +96,7 @@ const Suggestions: React.FC<SuggestionsProps> = ({ user }) => {
if (!data.suggestions || !user.plus) return null
const ownSuggestion = data.suggestions.find(
suggestion =>
(suggestion) =>
suggestion.suggester_discord_user.discord_id === user.discord_id
)
@@ -113,28 +113,24 @@ const Suggestions: React.FC<SuggestionsProps> = ({ user }) => {
}
const plusOneVouches = vouchesData.vouches.filter(
vouch => vouch.plus.vouch_status === "ONE"
(vouch) => vouch.plus.vouch_status === "ONE"
)
const plusTwoVouches = vouchesData.vouches.filter(
vouch => vouch.plus.vouch_status === "TWO"
(vouch) => vouch.plus.vouch_status === "TWO"
)
const plusOneSuggested = data.suggestions.filter(
suggestion => suggestion.plus_server === "ONE"
(suggestion) => suggestion.plus_server === "ONE"
)
const plusTwoSuggested = data.suggestions.filter(
suggestion => suggestion.plus_server === "TWO"
(suggestion) => suggestion.plus_server === "TWO"
)
const vouchMap = (vouch: VouchUser) => {
return (
<React.Fragment key={vouch.discord_id}>
<Flex mr="1em" alignItems="center">
<UserAvatar
twitterName={vouch.twitter_name}
name={vouch.username}
size="sm"
/>
<UserAvatar src={vouch.avatar} name={vouch.username} size="sm" />
</Flex>
<Box>
<Box as="span" fontWeight="bold">
@@ -158,7 +154,7 @@ const Suggestions: React.FC<SuggestionsProps> = ({ user }) => {
<React.Fragment key={suggestion.discord_user.discord_id}>
<Flex mr="1em" alignItems="center">
<UserAvatar
twitterName={suggested_user.twitter_name}
src={suggested_user.avatar}
name={suggested_user.username}
size="sm"
/>
@@ -221,7 +217,7 @@ const Suggestions: React.FC<SuggestionsProps> = ({ user }) => {
{!isSmall ? (
<Tabs
index={tabIndex}
onChange={chosenIndex => setTabIndex(chosenIndex)}
onChange={(chosenIndex) => setTabIndex(chosenIndex)}
isFitted
variant="line"
mt="2em"

View File

@@ -68,7 +68,7 @@ const Summaries: React.FC<SummariesProps> = ({ summaries }) => {
const members: Summary[] = []
const suggested: Summary[] = []
summaries.forEach(summary => {
summaries.forEach((summary) => {
if (summary.suggested) suggested.push(summary)
else members.push(summary)
})
@@ -79,7 +79,7 @@ const Summaries: React.FC<SummariesProps> = ({ summaries }) => {
<React.Fragment key={discord_user.discord_id}>
<Flex mr="1em" alignItems="center">
<UserAvatar
twitterName={discord_user.twitter_name}
src={discord_user.avatar}
name={discord_user.username}
size="sm"
/>

View File

@@ -20,7 +20,7 @@ export interface Summary {
discord_id: string
username: string
discriminator: string
twitter_name: string
avatar?: string
}
score: {
total: number
@@ -131,21 +131,21 @@ const VotingHistoryPage: React.FC<RouteComponentProps> = () => {
{ label: "+2", value: "+2" },
]}
value={forms.plus_server}
setValue={value => setForms({ ...forms, plus_server: value })}
setValue={(value) => setForms({ ...forms, plus_server: value })}
/>
</Box>
)}
<Box m="0.5em" minW="250px">
<Select
label=""
options={monthChoices.map(my => ({ label: my, value: my }))}
options={monthChoices.map((my) => ({ label: my, value: my }))}
value={forms.monthYear}
setValue={value => setForms({ ...forms, monthYear: value })}
setValue={(value) => setForms({ ...forms, monthYear: value })}
/>
</Box>
</Flex>
<Summaries
summaries={data.summaries!.filter(summary => {
summaries={data.summaries!.filter((summary) => {
const server = summary.plus_server === "ONE" ? "+1" : "+2"
return (
summary.month === month &&

View File

@@ -22,7 +22,7 @@ interface LeaderboardPlayer {
username: string
discord_id: string
discriminator: string
twitter_name?: string
avatar?: string
}
first: number
second: number
@@ -47,8 +47,8 @@ const DraftLeaderboard: React.FC<DraftLeaderboardProps> = ({
const { themeColor, grayWithShade } = useContext(MyThemeContext)
const isSmall = useBreakPoints(550)
const plusOneLeaderboard = leaderboards.find(lb => lb.type === "DRAFTONE")
const plusTwoLeaderboard = leaderboards.find(lb => lb.type === "DRAFTTWO")
const plusOneLeaderboard = leaderboards.find((lb) => lb.type === "DRAFTONE")
const plusTwoLeaderboard = leaderboards.find((lb) => lb.type === "DRAFTTWO")
if (!plusOneLeaderboard && !plusTwoLeaderboard) return null
@@ -93,7 +93,7 @@ const DraftLeaderboard: React.FC<DraftLeaderboardProps> = ({
<Link to={`/u/${player.discord_user.discord_id}`}>
<UserAvatar
twitterName={player.discord_user.twitter_name}
src={player.discord_user.avatar}
name={player.discord_user.username}
/>
</Link>

View File

@@ -79,10 +79,7 @@ const UserItem: React.FC<{ data?: UserData }> = ({ data }) => {
return (
<Menu>
<MenuButton>
<UserAvatar
name={data.user.username}
twitterName={data.user.twitter_name}
/>
<UserAvatar name={data.user.username} src={data.user.avatar} />
</MenuButton>
<MenuList bg={bgColor}>
<Link

View File

@@ -27,7 +27,7 @@ const LogoHeader: React.FC<LogoHeaderProps> = ({
const { themeColorWithShade, grayWithShade } = useContext(MyThemeContext)
return (
<Box display="flex" flexDirection="column" alignItems="center">
<UserAvatar name={name} twitterName={twitter_name} size="2xl" />
{/*<UserAvatar name={name} twitterName={twitter_name} size="2xl" />*/}
<Box fontWeight="light" fontSize="48px" w="100%" textAlign="center">
{name}
</Box>

View File

@@ -50,7 +50,7 @@ const MemberCard: React.FC<MemberCardProps> = ({ member }) => {
</Link>
</Box>
<Box display="flex" flexDirection="column" alignItems="center">
<UserAvatar name={member.username} twitterName={member.twitter_name} />
{/*<UserAvatar name={member.username} twitterName={member.twitter_name} />*/}
{member.country && (
<Box mt="0.5em" display="flex" alignItems="center">
<Flag code={member.country} />

View File

@@ -48,11 +48,7 @@ const AvatarWithInfo: React.FC<AvatarWithInfoProps> = ({ user, canEdit }) => {
alignItems="center"
flexDirection="column"
>
<UserAvatar
name={user.username}
twitterName={user.twitter_name}
size="2xl"
/>
<UserAvatar name={user.username} src={user.avatar} size="2xl" />
<List
spacing={2}
mt="1em"
@@ -76,7 +72,7 @@ const AvatarWithInfo: React.FC<AvatarWithInfoProps> = ({ user, canEdit }) => {
{user.country && (
<ListItem>
<Flag code={user.country} />
{countries.find(obj => obj.code === user.country)?.name}
{countries.find((obj) => obj.code === user.country)?.name}
</ListItem>
)}
{user.twitter_name && (

View File

@@ -80,10 +80,7 @@ const UserSearchPage: React.FC<RouteComponentProps> = () => {
transition="0.5s all"
>
<Flex key={user.discord_id} alignItems="center">
<UserAvatar
name={user.username}
twitterName={user.twitter_name}
/>{" "}
<UserAvatar name={user.username} src={user.avatar} />{" "}
<Flex flexDir="column" ml="0.5em">
<Box fontWeight="bold" fontSize="1.1em">
{user.username}#{user.discriminator}

View File

@@ -138,13 +138,6 @@ const Top500BrowserPage: React.FC<RouteComponentProps> = () => {
placement.player?.discord_id ? "pointer" : undefined
}
>
{placement.player?.twitter && (
<UserAvatar
name={placement.name}
twitterName={placement.player.twitter}
size="xs"
/>
)}
<Box
as="span"
ml={placement.player?.twitter ? "0.5em" : undefined}

View File

@@ -6,6 +6,7 @@ export interface FreeAgentMatchesData {
username: string
discriminator: string
twitter_name?: string
avatar?: string
}[]
number_of_likes_received: number
liked_discord_ids: string[]
@@ -18,7 +19,7 @@ export const FREE_AGENT_MATCHES: DocumentNode = gql`
matched_discord_users {
username
discriminator
twitter_name
avatar
}
number_of_likes_received
liked_discord_ids

View File

@@ -20,6 +20,7 @@ export const FREE_AGENT_POSTS: DocumentNode = gql`
country
weapons
top500
avatar
}
}
}

View File

@@ -24,6 +24,7 @@ export const SEARCH_FOR_USER: DocumentNode = gql`
top500
custom_url
bio
avatar
sens {
stick
motion

View File

@@ -13,6 +13,7 @@ export interface CompetitiveFeedEvent {
discriminator: string
twitter_name?: string
discord_id: string
avatar?: string
}
}
@@ -35,6 +36,7 @@ export const UPCOMING_EVENTS: DocumentNode = gql`
discriminator
twitter_name
discord_id
avatar
}
}
}

View File

@@ -6,6 +6,7 @@ export const USER: DocumentNode = gql`
id
username
twitter_name
avatar
discord_id
custom_url
plus {

View File

@@ -6,6 +6,7 @@ export interface UsersData {
discriminator: string
twitter_name?: string
username: string
avatar?: string
}[]
}
@@ -16,6 +17,7 @@ export const USERS: DocumentNode = gql`
discriminator
discord_id
twitter_name
avatar
}
}
`

View File

@@ -5,7 +5,7 @@ export interface VotingSuggested {
discord_id: string
username: string
discriminator: string
twitter_name?: string
avatar?: string
}
suggester_discord_user: {
username: string
@@ -20,7 +20,7 @@ export interface UsersForVotingData {
users: {
username: string
discriminator: string
twitter_name?: string
avatar?: string
discord_id: string
plus: {
membership_status?: "ONE" | "TWO"
@@ -44,7 +44,7 @@ export const USERS_FOR_VOTING: DocumentNode = gql`
users {
username
discriminator
twitter_name
avatar
discord_id
plus {
membership_status
@@ -57,7 +57,7 @@ export const USERS_FOR_VOTING: DocumentNode = gql`
discord_id
username
discriminator
twitter_name
avatar
}
suggester_discord_user {
username

View File

@@ -58,6 +58,7 @@ export interface UserLean {
username: string
discord_id: string
twitter_name?: string
avatar?: string
custom_url?: string
plus?: {
membership_status?: "ONE" | "TWO"
@@ -73,6 +74,7 @@ export interface User {
username: string
discriminator: string
discord_id: string
avatar?: string
twitch_name?: string
twitter_name?: string
country?: CountryCode
@@ -150,6 +152,7 @@ export interface FreeAgentPost {
country?: CountryCode
weapons?: Weapon[]
top500: boolean
avatar?: string
}
}

View File

@@ -79,6 +79,11 @@ const resolvers = {
await User.findByIdAndUpdate(root._id, { top500: true })
return true
},
avatar: (root) => {
if (!root.avatar) return null
return `https://cdn.discordapp.com/avatars/${root.discord_id}/${root.avatar}.jpg`
},
},
Query: {
user: (root, args, ctx) => {