have worker send error back to client (#1178)

## Description:
On error, send the message back to the client before closing the
websocket.

## 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
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

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

<DISCORD USERNAME>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
This commit is contained in:
evanpelle
2025-06-17 20:13:37 -07:00
committed by GitHub
parent c052ab04e0
commit 4480871f65
6 changed files with 73 additions and 12 deletions
+29 -3
View File
@@ -99,6 +99,17 @@ export function joinLobby(
terrainLoad,
).then((r) => r.start());
}
if (message.type === "error") {
showErrorModal(
message.error,
"",
lobbyConfig.gameID,
lobbyConfig.clientID,
true,
false,
"error_modal.connection_error",
);
}
};
transport.connect(onconnect, onmessage);
return () => {
@@ -309,7 +320,19 @@ export class ClientGameRunner {
this.lobby.gameStartInfo.gameID,
this.lobby.clientID,
true,
translateText("error_modal.desync_notice"),
false,
"error_modal.desync_notice",
);
}
if (message.type === "error") {
showErrorModal(
message.error,
"",
this.lobby.gameID,
this.lobby.clientID,
true,
false,
"error_modal.connection_error",
);
}
if (message.type === "turn") {
@@ -538,7 +561,8 @@ function showErrorModal(
gameID: GameID,
clientID: ClientID,
closable = false,
heading = translateText("error_modal.crashed"),
showDiscord = true,
heading = "error_modal.crashed",
) {
const errorText = `Error: ${errMsg}\nStack: ${stack}`;
@@ -550,7 +574,9 @@ function showErrorModal(
modal.id = "error-modal";
const content = `${translateText(heading)}\n game id: ${gameID}, client id: ${clientID}\n${translateText("error_modal.paste_discord")}\n${errorText}`;
const discord = showDiscord ? translateText("error_modal.paste_discord") : "";
const content = `${discord}\n${translateText(heading)}\n game id: ${gameID}, client id: ${clientID}\n${errorText}`;
// Create elements
const pre = document.createElement("pre");
+2 -2
View File
@@ -327,8 +327,8 @@ export class Transport {
console.log(
`WebSocket closed. Code: ${event.code}, Reason: ${event.reason}`,
);
if (event.code !== 1000) {
console.log(`reconnecting`);
if (event.code !== 1000 && event.code !== 1002) {
console.log(`recieved error code ${event.code}, reconnecting`);
this.reconnect();
}
};