Changeset View
Changeset View
Standalone View
Standalone View
native/avatars/user-avatar.react.js
Show All 12 Lines | |||||
type Size = 'micro' | 'small' | 'large' | 'profile'; | type Size = 'micro' | 'small' | 'large' | 'profile'; | ||||
type Props = | type Props = | ||||
| { +userID: ?string, +size: Size } | | { +userID: ?string, +size: Size } | ||||
| { +userInfo: ?GenericUserInfoWithAvatar, +size: Size }; | | { +userInfo: ?GenericUserInfoWithAvatar, +size: Size }; | ||||
function UserAvatar(props: Props): React.Node { | function UserAvatar(props: Props): React.Node { | ||||
const { userID, userInfo: userInfoProp, size } = props; | const { userID, userInfo: userInfoProp, size } = props; | ||||
const currentUserInfo = useSelector(state => state.currentUserInfo); | const userInfo = useSelector(state => { | ||||
const userInfo = useSelector(state => | if (!userID) { | ||||
userID ? state.userStore.userInfos[userID] : userInfoProp, | return userInfoProp; | ||||
); | } else if (userID === state.currentUserInfo?.id) { | ||||
return state.currentUserInfo; | |||||
const avatarUserInfo = | } else { | ||||
userID === currentUserInfo?.id ? currentUserInfo : userInfo; | return state.userStore.userInfos[userID]; | ||||
const avatarInfo = getAvatarForUser(avatarUserInfo); | } | ||||
}); | |||||
const avatarInfo = getAvatarForUser(userInfo); | |||||
const resolvedUserAvatar = useENSResolvedAvatar(avatarInfo, userInfo); | const resolvedUserAvatar = useENSResolvedAvatar(avatarInfo, userInfo); | ||||
return <Avatar size={size} avatarInfo={resolvedUserAvatar} />; | return <Avatar size={size} avatarInfo={resolvedUserAvatar} />; | ||||
} | } | ||||
export default UserAvatar; | export default UserAvatar; |