revamping the logic much cleaner
This commit is contained in:
+45
-49
@@ -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}
|
||||||
|
|||||||
Reference in New Issue
Block a user