diff --git a/binaries/data/mods/public/gui/pregame/MainMenuItems.js b/binaries/data/mods/public/gui/pregame/MainMenuItems.js
index 7d66c1523b..679e7998f9 100644
--- a/binaries/data/mods/public/gui/pregame/MainMenuItems.js
+++ b/binaries/data/mods/public/gui/pregame/MainMenuItems.js
@@ -222,10 +222,13 @@ export const mainMenuItems = [
(Engine.StartXmppClient ? "" : translate("Launch the multiplayer lobby. \\[DISABLED BY BUILD]")),
"enabled": () => !!Engine.StartXmppClient,
"hotkey": "lobby",
- "onPress": () =>
+ "onPress": async(closePageCallback) =>
{
- if (Engine.StartXmppClient)
- Engine.OpenChildPage("page_prelobby_entrance.xml");
+ if (!Engine.StartXmppClient)
+ return;
+ const ret = await Engine.OpenChildPage("page_prelobby_entrance.xml");
+ if (ret)
+ closePageCallback({ [Engine.openRequest]: ret });
}
},
{
diff --git a/binaries/data/mods/public/gui/prelobby/entrance/entrance.js b/binaries/data/mods/public/gui/prelobby/entrance/entrance.js
index 19508023d8..c61797d4f3 100644
--- a/binaries/data/mods/public/gui/prelobby/entrance/entrance.js
+++ b/binaries/data/mods/public/gui/prelobby/entrance/entrance.js
@@ -1,17 +1,30 @@
function init()
{
- if (Engine.ConfigDB_GetValue("user", "lobby.login"))
- loginButton();
+ return Promise.race([loginButton(), cancelHandler()]);
+}
+function cancelHandler()
+{
return new Promise(closePageCallback =>
{
Engine.GetGUIObjectByName("cancel").onPress = closePageCallback;
});
}
-function loginButton()
+async function loginButton()
{
- Engine.OpenChildPage("page_prelobby_login.xml");
+ let skipEntrance = Engine.ConfigDB_GetValue("user", "lobby.login");
+ while (true)
+ {
+ if (!skipEntrance)
+ await new Promise(resolve => { Engine.GetGUIObjectByName("login").onPress = resolve; });
+
+ const ret = await Engine.OpenChildPage("page_prelobby_login.xml");
+ if (ret)
+ return ret;
+
+ skipEntrance = false;
+ }
}
async function registerButton()
diff --git a/binaries/data/mods/public/gui/prelobby/entrance/entrance.xml b/binaries/data/mods/public/gui/prelobby/entrance/entrance.xml
index 94c5641497..7f390b5ccb 100644
--- a/binaries/data/mods/public/gui/prelobby/entrance/entrance.xml
+++ b/binaries/data/mods/public/gui/prelobby/entrance/entrance.xml
@@ -21,9 +21,8 @@
registerButton();
-