Client: Fix status updating

This commit is contained in:
Aleksandr Lushkin 2024-08-22 21:48:09 +02:00
parent c2d03fdf7e
commit 2ba528da01
3 changed files with 17 additions and 9 deletions

View File

@ -357,7 +357,7 @@ const User = ({
<div className="me-label">&nbsp;{`(${t("Common:MeLabel")})`}</div>
)}
</div>
{showStatus && <Status status={statusInRoom?.status} />}
{showStatus && <Status statusInRoom={statusInRoom} />}
{/*{!user.isGroup && (*/}
{/* <div className="role-email" style={{ display: "flex" }}>*/}
{/* <Text*/}

View File

@ -26,15 +26,16 @@
import { RectangleSkeleton } from "@docspace/shared/skeletons";
import { Text } from "@docspace/shared/components/text";
import { TStatusInRoom } from "@docspace/shared/utils/socket";
interface StatusProps {
status?: string;
statusInRoom?: TStatusInRoom;
}
export const Status = (props: StatusProps) => {
const { status } = props;
const { statusInRoom } = props;
if (!status) {
if (!statusInRoom) {
return (
<RectangleSkeleton width="70" height="12" className="status-loader" />
);
@ -42,8 +43,8 @@ export const Status = (props: StatusProps) => {
return (
<div className="status-wrapper">
{status === "online" && <div className="status-indicator" />}
<Text className="status-text">{status}</Text>
{statusInRoom.status === "online" && <div className="status-indicator" />}
<Text className="status-text">{statusInRoom.status}</Text>
</div>
);
};

View File

@ -117,7 +117,14 @@ class InfoPanelStore {
});
socketHelper.on("enter-in-room", this.updateMemberStatus);
socketHelper.on("leave-in-room", this.updateMemberStatus);
socketHelper.on("leave-in-room", (data) => {
const statusInRoom = this.statusesInRoomMap.get(data.userId);
if (!statusInRoom) return;
const newStatusInRoom = { ...statusInRoom, status: "offline", ...data };
this.updateMemberStatus(newStatusInRoom);
});
}
// Setters
@ -839,11 +846,11 @@ class InfoPanelStore {
};
setStatusesInRoomMap = (statuses) => {
this.statusesInRoomMap = new Map(statuses.map((s) => [s.id, s]));
this.statusesInRoomMap = new Map(statuses.map((s) => [s.userId, s]));
};
updateMemberStatus = (status) => {
this.statusesInRoomMap.set(status.id, status);
this.statusesInRoomMap.set(status.userId, status);
};
}