revamping the logic much cleaner

This commit is contained in:
Arjun Patel
2022-01-17 15:05:50 -08:00
parent 249873db96
commit 16795b3bc3
+45 -49
View File
@@ -22,54 +22,59 @@ export default function RoomCard(props: IRoomCardProps) {
isUserInRoom = true; isUserInRoom = true;
} }
const listOfValidUserIdsInRoom: string[] = props.room.membersInRoom?.filter( // first array of all members invited
(userId) => userId in teamUsersMap 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 // show members who are in the invite list but not already in the room
const membersInvited = () => { const membersInvited = () => {
if (!listOfValidUserIdsInRoom) { if (allMembersInvited?.length == 0) {
return; return;
} }
const invitedMembersNotInRoom = props.room.members?.filter( const listOfNames = allMembersInvited
(memberId) => !listOfValidUserIdsInRoom.includes(memberId) .map((user) => user.nickName)
);
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(", "); .join(", ");
console.log(listOfMembersString);
return ( return (
<Tooltip title={listOfMembersString}> <Tooltip title={listOfNames}>
<span className="inline-flex flex-row-reverse items-center shrink-0 mr-1"> <span className="inline-flex flex-row-reverse items-center shrink-0 mr-1">
<Avatar.Group> <Avatar.Group>
{listOfUsersInvited.map((user, i) => { {allMembersInvitedButNotInRoom.map((user, i) => {
return ( return (
<Avatar <Avatar
key={user.id} key={user.id}
@@ -85,28 +90,19 @@ export default function RoomCard(props: IRoomCardProps) {
}; };
const membersInRoom = () => { const membersInRoom = () => {
if (!listOfValidUserIdsInRoom) { if (allMembersInRoom?.length == 0) {
return; return;
} }
const listOfUsersInRoom: User[] = listOfValidUserIdsInRoom.map( const listOfNames = allMembersInRoom
(userId) => teamUsersMap[userId]
);
const listOfMembersString = listOfUsersInRoom
.map((user) => user.nickName) .map((user) => user.nickName)
.join(", "); .join(", ");
// handle if I am in the room
if (isUserInRoom) {
listOfUsersInRoom.push(user);
}
return ( return (
<Tooltip title={listOfMembersString}> <Tooltip title={listOfNames}>
<span className="inline-flex flex-row-reverse items-center shrink-0 mr-1"> <span className="inline-flex flex-row-reverse items-center shrink-0 mr-1">
<Avatar.Group> <Avatar.Group>
{listOfUsersInRoom.map((user, i) => { {allMembersInRoom.map((user, i) => {
return ( return (
<Avatar <Avatar
key={user.id} key={user.id}