From e78f9ea475444d3c17b3fe07792eb8ae77120727 Mon Sep 17 00:00:00 2001 From: Arjun Patel Date: Mon, 17 Jan 2022 14:47:51 -0800 Subject: [PATCH] ui for the people group icons --- components/RoomCard.tsx | 133 ++++++++++++++++++++++++++++++---------- 1 file changed, 99 insertions(+), 34 deletions(-) diff --git a/components/RoomCard.tsx b/components/RoomCard.tsx index efe6f69..5cf76c5 100644 --- a/components/RoomCard.tsx +++ b/components/RoomCard.tsx @@ -5,52 +5,114 @@ import Room from "../models/room"; import RoomTypeTag from "./RoomTypeTag"; import Image from "next/image"; import { useAuth } from "../contexts/authContext"; -import { Tooltip } from "antd"; +import { Avatar, Divider, Tooltip } from "antd"; +import { UserOutlined, AntDesignOutlined } from "@ant-design/icons"; +import { useTeamDashboardContext } from "../contexts/teamDashboardContext"; +import { User } from "../models/user"; interface IRoomCardProps { room: Room; } export default function RoomCard(props: IRoomCardProps) { const { currUser } = useAuth(); - - // const x = {`${ - // props.room.membersInRoom?.includes(currUser.uid) - // ? " bg-white bg-opacity-80" - // : "bg-gray-300 bg-opacity-25" - // }`} + const { teamUsersMap, user } = useTeamDashboardContext(); var isUserInRoom: boolean; if (props.room.membersInRoom?.includes(currUser.uid)) { isUserInRoom = true; } - const membersInRoom = ( - - - - - profile - - - - profile - - - + const listOfValidUserIdsInRoom: string[] = props.room.membersInRoom?.filter( + (userId) => userId in teamUsersMap ); + // show members who are in the invite list but not already in the room + const membersInvited = () => { + const invitedMembersNotInRoom = props.room.members?.filter( + (memberId) => !listOfValidUserIdsInRoom.includes(memberId) + ); + + console.log(invitedMembersNotInRoom); + + var listOfUsersInvited = invitedMembersNotInRoom.reduce( + (results, userId) => { + if (userId in teamUsersMap) { + results.push(teamUsersMap[userId]); + } + + if (userId == currUser.uid) { + results.push(user); + } + + return results; + }, + [] as User[] + ); + + console.log(listOfUsersInvited); + + if (!listOfUsersInvited || listOfUsersInvited.length == 0) { + console.log("no invited members to show"); + return; + } + + const listOfMembersString = listOfUsersInvited + .map((user) => user.nickName ?? user.firstName) + .join(", "); + + console.log(listOfMembersString); + return ( + + + + {listOfUsersInvited.map((user, i) => { + return ( + + ); + })} + + + + ); + }; + + const membersInRoom = () => { + const listOfUsersInRoom: User[] = listOfValidUserIdsInRoom.map( + (userId) => teamUsersMap[userId] + ); + + const listOfMembersString = listOfUsersInRoom + .map((user) => user.nickName) + .join(", "); + + // handle if I am in the room + if (isUserInRoom) { + listOfUsersInRoom.push(user); + } + + return ( + + + + {listOfUsersInRoom.map((user, i) => { + return ( + + ); + })} + + + + ); + }; + return ( {props.room.description} @@ -82,6 +144,9 @@ export default function RoomCard(props: IRoomCardProps) { scrum */} + + {/* all invited members who are not in the room already */} + {membersInvited()} {/* room status and link(s) */} @@ -108,7 +173,7 @@ export default function RoomCard(props: IRoomCardProps) { {/* footer */} - {membersInRoom} + {membersInRoom()}