fix(room): fix stale room subscribe after async connect
connect() is async/fire-and-forget — if the user switches rooms while WS is still connecting, the subscribeRoom() call captures the stale (activeRoomId) closure value and subscribes to the wrong room. Fix by re-reading activeRoomIdRef.current after the await so we always subscribe to the room that is active when the connection actually opens.
This commit is contained in:
parent
7989f7ba4b
commit
beea8854ce
@ -248,7 +248,11 @@ export function RoomProvider({
|
||||
if (client.getStatus() !== 'open') {
|
||||
await client.connect();
|
||||
}
|
||||
await client.subscribeRoom(activeRoomId);
|
||||
// Re-check: activeRoomId may have changed while we were waiting for connect.
|
||||
// Use activeRoomIdRef to get the *current* room, not the stale closure value.
|
||||
const roomId = activeRoomIdRef.current;
|
||||
if (!roomId) return;
|
||||
await client.subscribeRoom(roomId);
|
||||
loadMoreRef.current?.(null);
|
||||
};
|
||||
setup();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user