import User from "@nirvana/common/models/user"; import { useAuth } from "../../contexts/authContext"; import { useRecoilValue, useRecoilState } from "recoil"; import { allRelevantContactsAtom } from "../../recoil/main"; import { userService } from "@nirvana/common/services"; import { Avatar } from "antd"; import { UserAvatarSizes } from "./UserAvatar"; const AVATAR_SHAPE = "circle"; export default function MasterAvatarGroup(props: { listOfUsers: User[]; showCurrUser?: boolean; size?: UserAvatarSizes; maxUserCount?: number; }) { const { currUser } = useAuth(); /** * Requirements: * if one two users in the conversation: then just get the one that is not the currUser * if three people => show icon of the other two people * if 4 people => show 3 people in triangle fashion * if 6 more 'other' people, then show 3 and then one circle saying how many more there are */ let finalistUsers: User[] = props.listOfUsers; if (!props.showCurrUser) { finalistUsers = props.listOfUsers.filter( (lUser) => lUser.id != currUser!.uid ); } // these are the finalists, so now show all of them depending on the number if (finalistUsers?.length == 1) { return ( ); } // if (finalistUsers?.length == 2) { // return ( // // // // // // // // // ); // } return ( {finalistUsers.map((oUser) => ( ))} ); } export function MasterAvatarGroupWithUserFetch(props: { listOfUserIds: string[]; showCurrUser?: boolean; maxUserCount?: number; size?: UserAvatarSizes; }) { const relContactsMap = useRecoilValue(allRelevantContactsAtom); const { currUser } = useAuth(); let listOfOtherUsers: string[] = [] as string[]; if (props.showCurrUser) { listOfOtherUsers = props.listOfUserIds; } else { listOfOtherUsers = props.listOfUserIds.filter( (lUser) => lUser != currUser!.uid ); } const resultUsers: User[] = [] as User[]; listOfOtherUsers.forEach((oUser) => { if (relContactsMap.has(oUser)) { resultUsers.push(relContactsMap.get(oUser)!); } }); return ; }