mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-09-30 23:27:55 -05:00
use discord avatars
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}>
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
/>
|
||||
|
||||
@@ -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 &&
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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} />
|
||||
|
||||
@@ -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 && (
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -20,6 +20,7 @@ export const FREE_AGENT_POSTS: DocumentNode = gql`
|
||||
country
|
||||
weapons
|
||||
top500
|
||||
avatar
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ export const SEARCH_FOR_USER: DocumentNode = gql`
|
||||
top500
|
||||
custom_url
|
||||
bio
|
||||
avatar
|
||||
sens {
|
||||
stick
|
||||
motion
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ export const USER: DocumentNode = gql`
|
||||
id
|
||||
username
|
||||
twitter_name
|
||||
avatar
|
||||
discord_id
|
||||
custom_url
|
||||
plus {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
`
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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) => {
|
||||
|
||||
Reference in New Issue
Block a user