import { BsThreeDots } from "react-icons/bs";
import { FaBell, FaClock, FaLink } from "react-icons/fa";
import { IoTimer } from "react-icons/io5";
import Room from "../models/room";
import RoomTypeTag from "./RoomTypeTag";
import Image from "next/image";
import { useAuth } from "../contexts/authContext";
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 { teamUsersMap, user } = useTeamDashboardContext();
var isUserInRoom: boolean;
if (props.room.membersInRoom?.includes(currUser.uid)) {
isUserInRoom = true;
}
// first array of all members invited
var allMembersInvited = props.room.members?.reduce((results, userId) => {
if (userId in teamUsersMap) {
results.push(teamUsersMap[userId]);
}
if (userId == currUser.uid) {
results.push(user);
}
return results;
}, [] as User[]);
// second array of all members in room
var allMembersInRoom = props.room.membersInRoom?.reduce((results, userId) => {
if (userId in teamUsersMap) {
results.push(teamUsersMap[userId]);
}
if (userId == currUser.uid) {
results.push(user);
}
return results;
}, [] as User[]);
// third array all members invited and not in the array of users in room
const allMembersInvitedButNotInRoom = allMembersInvited.filter(
(invitedMember) => {
if (allMembersInRoom.some((user) => user.id === invitedMember.id)) {
/* vendors contains the element we're looking for */
return false;
}
return true;
}
);
// show members who are in the invite list but not already in the room
const membersInvited = () => {
if (allMembersInvited?.length == 0) {
return;
}
const listOfNames = allMembersInvited
.map((user) => user.nickName)
.join(", ");
return (
{allMembersInvitedButNotInRoom.map((user, i) => {
return (
);
})}
);
};
const membersInRoom = () => {
if (allMembersInRoom?.length == 0) {
return;
}
const listOfNames = allMembersInRoom
.map((user) => user.nickName)
.join(", ");
return (
{allMembersInRoom.map((user, i) => {
return (
);
})}
);
};
return (
{/* header */}
{/* meeting details */}
{props.room.name}
{props.room.description}
{/* badges and tags */}
{/* scrum */}
{/* all invited members who are not in the room already */}
{membersInvited()}
{/* room status and link(s) */}
{/* room attachments */}
{props.room.attachments && props.room.attachments.length > 0 && (
)}
{/* footer */}
{membersInRoom()}
{" "}
);
}