From 60868a2d9f27b8a22fda8102bb9b11c0b2fb0366 Mon Sep 17 00:00:00 2001 From: TurboRx <187360786+TurboRx@users.noreply.github.com> Date: Tue, 14 Apr 2026 08:43:11 +0000 Subject: [PATCH] fix: defer ChatUserList subscription to prevent backlog loss and race conditions --- play.pokemonshowdown.com/src/panel-chat.tsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/play.pokemonshowdown.com/src/panel-chat.tsx b/play.pokemonshowdown.com/src/panel-chat.tsx index ac7042dfc..7a2bdd5c2 100644 --- a/play.pokemonshowdown.com/src/panel-chat.tsx +++ b/play.pokemonshowdown.com/src/panel-chat.tsx @@ -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() {