From ab85ba7db0858ec5e154c52413545962d35b875f Mon Sep 17 00:00:00 2001 From: AlexandreS <32449369+AlexandreSi@users.noreply.github.com> Date: Wed, 29 Jan 2025 17:56:56 +0100 Subject: [PATCH] Protect against concurrent tries to join a lobby --- Extensions/Multiplayer/multiplayertools.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Extensions/Multiplayer/multiplayertools.ts b/Extensions/Multiplayer/multiplayertools.ts index 305b5c8f2820..e5478d8ebf89 100644 --- a/Extensions/Multiplayer/multiplayertools.ts +++ b/Extensions/Multiplayer/multiplayertools.ts @@ -1616,9 +1616,8 @@ namespace gdjs { runtimeScene: gdjs.RuntimeScene, displayLoader: boolean ) => { - if (displayLoader) { - gdjs.multiplayerComponents.displayLoader(runtimeScene, true); - } + if (_isJoiningOrStartingAGame) return; + const _gameId = gdjs.projectData.properties.projectUuid; if (!_gameId) { handleLobbiesError( @@ -1627,12 +1626,14 @@ namespace gdjs { ); return; } + _isJoiningOrStartingAGame = true; + if (displayLoader) { + gdjs.multiplayerComponents.displayLoader(runtimeScene, true); + } const quickJoinLobbyRelativeUrl = `/play/game/${_gameId}/public-lobby/action/quick-join`; - // TODO: Protect against the action sent once per frame. - try { const quickJoinLobbyResponse: QuickJoinLobbyResponse = await gdjs.evtTools.network.retryIfFailed( { times: 2 },