Fix: member count in header and member list (#30982)

* fix: same member count in header and member list

* test: update test

* chore: use `useRoomMemberCount` to compute member count in member list

* test: add event emitter function on mocked `room.currentState`
This commit is contained in:
Florian Duros
2025-10-09 10:40:20 +00:00
committed by GitHub
parent b45488fc84
commit 3098eba4f2
4 changed files with 24 additions and 7 deletions
+11 -4
View File
@@ -38,6 +38,11 @@ type RoomMemberCountOpts = {
* Wait time between room member count update
*/
throttleWait?: number;
/**
* Whether to include invited members in the count
* @default false
*/
includeInvited?: boolean;
};
/**
@@ -48,19 +53,21 @@ type RoomMemberCountOpts = {
*/
export const useRoomMemberCount = (
room: Room,
{ throttleWait }: RoomMemberCountOpts = { throttleWait: 250 },
{ throttleWait, includeInvited }: RoomMemberCountOpts = { throttleWait: 250, includeInvited: false },
): number => {
const [count, setCount] = useState<number>(room.getJoinedMemberCount());
const [count, setCount] = useState<number>(
includeInvited ? room.getInvitedAndJoinedMemberCount() : room.getJoinedMemberCount(),
);
const throttledUpdate = useMemo(
() =>
throttle(
() => {
setCount(room.getJoinedMemberCount());
setCount(includeInvited ? room.getInvitedAndJoinedMemberCount() : room.getJoinedMemberCount());
},
throttleWait,
{ leading: true, trailing: true },
),
[room, throttleWait],
[room, throttleWait, includeInvited],
);
useTypedEventEmitter(room.currentState, RoomStateEvent.Members, throttledUpdate);