import { useRosettaColors } from "@/app/hooks/useRosettaColors"; import { useAvatars } from "@/app/providers/AvatarProvider/useAvatars"; import { useUserInformation } from "@/app/providers/InformationProvider/useUserInformation"; import { Avatar, Flex, MantineColor, Text } from "@mantine/core"; import { VerifiedBadge } from "../VerifiedBadge/VerifiedBadge"; import { OnlineState } from "@/app/providers/ProtocolProvider/protocol/packets/packet.onlinestate"; import { UserInformation } from "@/app/providers/InformationProvider/InformationProvider"; export enum AdditionalType { ONLINE, USERNAME } export interface UserRowProps { publicKey: string; rightSection?: (publicKey: string) => React.ReactNode; onClick?: (userInfo: UserInformation) => void; renderCondition?: (userInfo: UserInformation) => boolean; additionalType?: AdditionalType; bg?: MantineColor; } export function UserRow(props: UserRowProps) { const [userInfo] = useUserInformation(props.publicKey); const avatars = useAvatars(props.publicKey, false); const colors = useRosettaColors(); if(props.renderCondition && !props.renderCondition(userInfo)) { return null; } return ( 0 ? avatars[0].avatar : undefined} /> {userInfo.title} {!props.additionalType && ( {userInfo.online == OnlineState.ONLINE ? 'online' : 'offline'} )} {props.additionalType === AdditionalType.ONLINE && ( {userInfo.online == OnlineState.ONLINE ? 'online' : 'offline'} )} {props.additionalType === AdditionalType.USERNAME && ( @{userInfo.username} )} {props.rightSection && ( {props.rightSection(props.publicKey)} )} ); }