diff --git a/src/@types/models.d.ts b/src/@types/models.d.ts index 24c0b6b..b6124d7 100755 --- a/src/@types/models.d.ts +++ b/src/@types/models.d.ts @@ -61,6 +61,7 @@ interface IUserLite { avatar: string; bannerImage: string; rating?: number; + type?: number; } interface IUserProblemResultStats { diff --git a/src/common b/src/common index f650bbc..b6e8e5e 160000 --- a/src/common +++ b/src/common @@ -1 +1 @@ -Subproject commit f650bbc5dc12d96930a08f76540d5626be03bd7f +Subproject commit b6e8e5eead65ef202e6654f1e6f49824f4b2bc96 diff --git a/src/components/UserBar.tsx b/src/components/UserBar.tsx index 60220f3..e44fa70 100644 --- a/src/components/UserBar.tsx +++ b/src/components/UserBar.tsx @@ -1,10 +1,11 @@ import React from 'react'; -import { Avatar, Tooltip } from 'antd'; +import { Avatar, Icon, Tooltip } from 'antd'; import { Link } from 'react-router-dom'; import pages from '@/configs/pages'; import { formatAvatarUrl, urlf } from '@/utils/format'; import classNames from 'classnames'; import { getRatingLevel } from '@/utils/rating'; +import { EUserType } from '@/common/enums'; export interface Props { user: IUser | IUserLite; @@ -34,11 +35,15 @@ const UserBar: React.FC<Props> = ({ if (!user) { return <span>--</span>; } + const isTeam = user.type === EUserType.team; const avatar = !hideAvatar ? ( <Avatar size="small" icon="user" src={formatAvatarUrl(user.avatar)} /> ) : null; + const teamBadge = isTeam ? <Icon type="team" className="ml-sm-md" /> : null; const username = !hideName ? ( - <span style={{ marginLeft: hideAvatar ? '0' : '8px' }}>{nameFormat?.(user) ?? user.nickname}</span> + <span style={{ marginLeft: hideAvatar ? '0' : '8px' }}> + {nameFormat?.(user) ?? user.nickname} + </span> ) : null; const rating = user.rating; const userRatingLevel = getRatingLevel(rating); @@ -48,6 +53,7 @@ const UserBar: React.FC<Props> = ({ <span className={classNames('no-wrap', className)} style={ratingStyle}> {avatar} {username} + {teamBadge} </span> ); if (isContestUser || showAsText) {