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 = (
-
-
-
-
-
-
-
-
-
-
-
-
+ 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()}