fix: defer ChatUserList subscription to prevent backlog loss and race conditions

This commit is contained in:
TurboRx 2026-04-14 08:43:11 +00:00
parent 6591e699d9
commit 60868a2d9f

View File

@ -1428,12 +1428,18 @@ export class ChatUserList extends preact.Component<{
room: ChatRoom, left?: number, top?: number, minimized?: boolean, static?: boolean,
}> {
subscription: PSSubscription | null = null;
subscribeTimeout: number | null = null;
override componentDidMount() {
this.subscription = this.props.room.subscribe(args => {
if (!args) this.forceUpdate();
});
this.subscribeTimeout = window.setTimeout(() => {
this.subscribeTimeout = null;
this.subscription = this.props.room.subscribe(args => {
if (!args) this.forceUpdate();
});
this.forceUpdate();
}, 0);
}
override componentWillUnmount() {
if (this.subscribeTimeout !== null) window.clearTimeout(this.subscribeTimeout);
this.subscription?.unsubscribe();
}
render() {