Fix client reconnection after page refresh (#3117)

## Description:

- Removed all code related to generating a client ID on the client. The
server now assigns the client ID and sends it to the client in lobby
messages.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced

## Please put your Discord username so you can be contacted if a bug or
regression is found:

w.o.n
This commit is contained in:
Ryan
2026-02-09 01:10:11 +00:00
committed by GitHub
parent e7676b4260
commit 8dcc7cfb9a
15 changed files with 321 additions and 276 deletions
+4 -11
View File
@@ -25,7 +25,6 @@ import {
HumansVsNations,
} from "../core/game/Game";
import { getApiBase } from "./Api";
import { getClientIDForGame } from "./Auth";
import { crazyGamesSDK } from "./CrazyGamesSDK";
import { JoinLobbyEvent } from "./Main";
import { terrainMapFileLoader } from "./TerrainMapFileLoader";
@@ -61,9 +60,7 @@ export class JoinLobbyModal extends BaseModal {
private readonly handleLobbyInfo = (event: LobbyInfoEvent) => {
const lobby = event.lobby;
if (!this.currentLobbyId || lobby.gameID !== this.currentLobbyId) {
return;
}
this.currentClientID = event.myClientID;
// Only stop showing spinner when we have player info
if (this.isConnecting && lobby.clients) {
this.isConnecting = false;
@@ -335,7 +332,6 @@ export class JoinLobbyModal extends BaseModal {
new CustomEvent("join-lobby", {
detail: {
gameID: lobbyId,
clientID: this.currentClientID,
source: "public",
} as JoinLobbyEvent,
bubbles: true,
@@ -346,7 +342,8 @@ export class JoinLobbyModal extends BaseModal {
private startTrackingLobby(lobbyId: string, lobbyInfo?: GameInfo) {
this.currentLobbyId = lobbyId;
this.currentClientID = getClientIDForGame(lobbyId);
// clientID will be assigned by server via lobby_info message
this.currentClientID = "";
this.gameConfig = null;
this.players = [];
this.nationCount = 0;
@@ -545,9 +542,7 @@ export class JoinLobbyModal extends BaseModal {
}
}
this.lobbyCreatorClientID = this.isPrivateLobby()
? (lobby.clients?.[0]?.clientID ?? null)
: null;
this.lobbyCreatorClientID = lobby.lobbyCreatorClientID ?? null;
}
private startLobbyUpdates() {
@@ -776,7 +771,6 @@ export class JoinLobbyModal extends BaseModal {
new CustomEvent("join-lobby", {
detail: {
gameID: lobbyId,
clientID: this.currentClientID,
source: "private",
} as JoinLobbyEvent,
bubbles: true,
@@ -835,7 +829,6 @@ export class JoinLobbyModal extends BaseModal {
detail: {
gameID: lobbyId,
gameRecord: parsed.data,
clientID: this.currentClientID,
source: "private",
} as JoinLobbyEvent,
bubbles: true,