Client: Fix status updating
This commit is contained in:
parent
c2d03fdf7e
commit
2ba528da01
@ -357,7 +357,7 @@ const User = ({
|
||||
<div className="me-label"> {`(${t("Common:MeLabel")})`}</div>
|
||||
)}
|
||||
</div>
|
||||
{showStatus && <Status status={statusInRoom?.status} />}
|
||||
{showStatus && <Status statusInRoom={statusInRoom} />}
|
||||
{/*{!user.isGroup && (*/}
|
||||
{/* <div className="role-email" style={{ display: "flex" }}>*/}
|
||||
{/* <Text*/}
|
||||
|
@ -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>
|
||||
);
|
||||
};
|
||||
|
@ -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);
|
||||
};
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user