diff --git a/src/client/ClientGameRunner.ts b/src/client/ClientGameRunner.ts index 0e2eb960c..5ff162c5f 100644 --- a/src/client/ClientGameRunner.ts +++ b/src/client/ClientGameRunner.ts @@ -166,7 +166,7 @@ export function joinLobby( if (message.error === "full-lobby") { document.dispatchEvent( new CustomEvent("leave-lobby", { - detail: { lobby: lobbyConfig.gameID }, + detail: { lobby: lobbyConfig.gameID, cause: "full-lobby" }, bubbles: true, composed: true, }), diff --git a/src/client/Main.ts b/src/client/Main.ts index 1241fe060..837887c7a 100644 --- a/src/client/Main.ts +++ b/src/client/Main.ts @@ -866,7 +866,7 @@ class Client { } } - private async handleLeaveLobby(/* event: CustomEvent */) { + private async handleLeaveLobby(event?: CustomEvent) { if (this.lobbyHandle === null) { return; } @@ -883,6 +883,21 @@ class Client { document.body.classList.remove("in-game"); + if (this.joinModal.isOpen()) { + this.joinModal.close(); + if (event?.detail.cause === "full-lobby") { + window.dispatchEvent( + new CustomEvent("show-message", { + detail: { + message: translateText("public_lobby.join_timeout"), + color: "red", + duration: 3500, + }, + }), + ); + } + } + crazyGamesSDK.gameplayStop(); } diff --git a/src/client/components/BaseModal.ts b/src/client/components/BaseModal.ts index b73eb9470..c8eff0230 100644 --- a/src/client/components/BaseModal.ts +++ b/src/client/components/BaseModal.ts @@ -35,6 +35,10 @@ export abstract class BaseModal extends LitElement { return this; } + public isOpen(): boolean { + return this.isModalOpen; + } + protected firstUpdated(): void { if (this.modalEl) { this.modalEl.onClose = () => {