Cockatrice/cockatrice/src/interface/widgets/tabs
BruebachL 9acb9739b2
[Client] Fix spurious server room join error (#7259)
* [Client] Fix spurious server room join error

The server replies RespContextError when a join command is received for a
room that connection is already registered in. The client was sending such
duplicate joins in benign situations - double-clicking to join a room, or
clicking a room the selector was already auto-joining - and answered them
with a modal telling users to restart the client.

Joins for the same room are now deduplicated while one is in flight, and a
remaining RespContextError is healed by leaving and rejoining the room so
the tab appears without a client restart. Error dialogs are only shown for
user-initiated joins, so failed auto-joins no longer spam critical popups.

* [Client] Bound stale-membership room join heal to one attempt

The RespContextError heal (leave + rejoin) previously recurred
unconditionally, so a server that kept returning RespContextError for a
reason other than stale membership would loop forever. Track room ids
that already received a heal and surface the error dialog after one
attempt instead of retrying indefinitely.

* [Client] Scope room-join heal guard to one join attempt

* [Client] Hoist room-join heal guard lookup out of response switch

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2026-09-19 09:56:09 +02:00
..
api [Client] Show localized card names, texts and pictures (#7294) 2026-09-18 12:03:07 +02:00
visual_deck_editor [Client] Expose custom zone management in the deck editor (#7205) 2026-09-05 22:00:21 +02:00
visual_deck_storage Standardize Doxygen documentation (#6885) 2026-05-21 22:58:07 +02:00
abstract_tab_deck_editor.cpp [Settings] Shuffle some settings around (#7084) 2026-08-08 22:27:41 +02:00
abstract_tab_deck_editor.h [VDS] Drive folder and preview widgets from the model (#7106) 2026-08-25 19:23:16 +02:00
tab.cpp [Move refactor] Move tabs to interface/widgets (#6235) 2025-10-09 14:51:47 +02:00
tab.h [Client] Route cockatrice:// link clicks from chat to the intent chain (#7136) 2026-08-17 01:03:37 +02:00
tab_account.cpp [Client] Explain the buddy and ignore lists in the user tab (#2072) (#7258) 2026-09-07 02:29:17 +02:00
tab_account.h [Server/Client/Protocol] Reporting users + moderation queue functionality (#7091) 2026-08-21 15:00:13 +02:00
tab_admin.cpp Split trice_limits.h into dedicated headers (#7025) 2026-06-29 14:37:52 -07:00
tab_admin.h Standardize Doxygen documentation (#6885) 2026-05-21 22:58:07 +02:00
tab_card_art_rules.cpp [CardSearch] Add card completion popups to chats and search fields (#7089) 2026-08-11 18:50:30 +02:00
tab_card_art_rules.h [UserListDelegate] Consider providerId (#7018) 2026-06-27 11:23:55 -04:00
tab_deck_editor.cpp [Settings] Split cache_settings monolith into multiple SettingsManager sub-classes (#7050) 2026-07-27 11:25:39 +02:00
tab_deck_editor.h [TabDeckEditor] Refactor: pull up showPrintingSelector (#6964) 2026-06-03 09:35:48 -07:00
tab_deck_storage.cpp Migrate theme asset loads to scheme-variant resolution (#7209-2) (#7276) 2026-09-11 17:59:57 +02:00
tab_deck_storage.h Standardize Doxygen documentation (#6885) 2026-05-21 22:58:07 +02:00
tab_developer.cpp [Client/Server/Protocol] Surface live metrics in the Developer tab (#7212) 2026-09-11 17:18:56 +02:00
tab_developer.h [Client/Server/Protocol] Surface live metrics in the Developer tab (#7212) 2026-09-11 17:18:56 +02:00
tab_game.cpp [Game] Prevent spectator duplication when replaying joined events (#7248) 2026-09-07 01:57:35 +02:00
tab_game.h [Game] Add an invite button to non-started and not full games (#7143) 2026-08-17 21:37:15 +02:00
tab_home.cpp [Cleanup] Unused #includes (#6367) 2025-11-29 18:53:11 +01:00
tab_home.h Standardize Doxygen documentation (#6885) 2026-05-21 22:58:07 +02:00
tab_logs.cpp [Server/Client/Protocol] Add developer staff role (#7211) 2026-09-11 17:18:56 +02:00
tab_logs.h [Server/Client/Protocol] Add developer staff role (#7211) 2026-09-11 17:18:56 +02:00
tab_message.cpp [Client] Prevent contacting users on the ignore list (#7262) 2026-09-07 08:14:15 +02:00
tab_message.h [Game] Add an invite button to non-started and not full games (#7143) 2026-08-17 21:37:15 +02:00
tab_moderation.cpp [Server/Client/Protocol] Add developer staff role (#7211) 2026-09-11 17:18:56 +02:00
tab_moderation.h [Server/Client/Protocol] Reporting users + moderation queue functionality (#7091) 2026-08-21 15:00:13 +02:00
tab_replays.cpp Migrate theme asset loads to scheme-variant resolution (#7209-2) (#7276) 2026-09-11 17:59:57 +02:00
tab_replays.h Standardize Doxygen documentation (#6885) 2026-05-21 22:58:07 +02:00
tab_report.cpp [Server/Client/Protocol] Reporting users + moderation queue functionality (#7091) 2026-08-21 15:00:13 +02:00
tab_report.h [Server/Client/Protocol] Reporting users + moderation queue functionality (#7091) 2026-08-21 15:00:13 +02:00
tab_room.cpp Migrate theme asset loads to scheme-variant resolution (#7209-2) (#7276) 2026-09-11 17:59:57 +02:00
tab_room.h [UserList] Unify friends/online/ignored list with section dividers and add search bar. (#7119) 2026-08-15 22:53:13 +02:00
tab_server.cpp [Client] Fix spurious server room join error (#7259) 2026-09-19 09:56:09 +02:00
tab_server.h [Client] Fix spurious server room join error (#7259) 2026-09-19 09:56:09 +02:00
tab_supervisor.cpp Migrate theme asset loads to scheme-variant resolution (#7209-2) (#7276) 2026-09-11 17:59:57 +02:00
tab_supervisor.h [Server/Client/Protocol] Add developer staff role (#7211) 2026-09-11 17:18:56 +02:00
tab_visual_database_display.cpp [TabDeckEditor] Refactor card database view into own class (#6967) 2026-06-05 10:20:46 -07:00
tab_visual_database_display.h [TabDeckEditor] Refactor card database view into own class (#6967) 2026-06-05 10:20:46 -07:00