From 1a0e9ecfc6a235b6af217dd13dec4da98f60dce1 Mon Sep 17 00:00:00 2001 From: Miodec Date: Fri, 3 May 2024 13:07:23 +0200 Subject: [PATCH] fix(challenge): loading challenges from the URL --- .../src/ts/controllers/account-controller.ts | 17 +----------- .../ts/controllers/challenge-controller.ts | 4 ++- frontend/src/ts/utils/url-handler.ts | 27 ++++++++++++++++++- 3 files changed, 30 insertions(+), 18 deletions(-) diff --git a/frontend/src/ts/controllers/account-controller.ts b/frontend/src/ts/controllers/account-controller.ts index 50ff47ac9..6f2a2f2a8 100644 --- a/frontend/src/ts/controllers/account-controller.ts +++ b/frontend/src/ts/controllers/account-controller.ts @@ -253,24 +253,9 @@ if (Auth && ConnectionState.get()) { URLHandler.loadCustomThemeFromUrl(search); URLHandler.loadTestSettingsFromUrl(search); + URLHandler.loadChallengeFromUrl(search); void URLHandler.linkDiscord(hash); - if (/challenge_.+/g.test(window.location.pathname)) { - Notifications.add( - "Challenge links temporarily disabled. Please use the command line to load the challenge manually", - 0, - { - duration: 7, - } - ); - return; - // Notifications.add("Loading challenge", 0); - // let challengeName = window.location.pathname.split("_")[1]; - // setTimeout(() => { - // ChallengeController.setup(challengeName); - // }, 1000); - } - Settings.updateAuthSections(); }); } else { diff --git a/frontend/src/ts/controllers/challenge-controller.ts b/frontend/src/ts/controllers/challenge-controller.ts index 9f9931186..51787079f 100644 --- a/frontend/src/ts/controllers/challenge-controller.ts +++ b/frontend/src/ts/controllers/challenge-controller.ts @@ -222,7 +222,9 @@ export async function setup(challengeName: string): Promise { return false; } - const challenge = list.filter((c) => c.name === challengeName)[0]; + const challenge = list.filter( + (c) => c.name.toLowerCase() === challengeName.toLowerCase() + )[0]; let notitext; try { if (challenge === undefined) { diff --git a/frontend/src/ts/utils/url-handler.ts b/frontend/src/ts/utils/url-handler.ts index b80aef75b..5c36ad372 100644 --- a/frontend/src/ts/utils/url-handler.ts +++ b/frontend/src/ts/utils/url-handler.ts @@ -11,6 +11,7 @@ import * as DB from "../db"; import * as Loader from "../elements/loader"; import * as AccountButton from "../elements/account-button"; import { restart as restartTest } from "../test/test-logic"; +import * as ChallengeController from "../controllers/challenge-controller"; export async function linkDiscord(hashOverride: string): Promise { if (!hashOverride) return; @@ -179,7 +180,9 @@ export function loadTestSettingsFromUrl(getOverride?: string): void { applied["funbox"] = de[7]; } - restartTest(); + restartTest({ + nosave: true, + }); let appliedString = ""; @@ -197,3 +200,25 @@ export function loadTestSettingsFromUrl(getOverride?: string): void { }); } } + +export function loadChallengeFromUrl(getOverride?: string): void { + const getValue = ( + Misc.findGetParameter("challenge", getOverride) ?? "" + ).toLowerCase(); + if (getValue === "") return; + + Notifications.add("Loading challenge", 0); + ChallengeController.setup(getValue) + .then((result) => { + if (result === true) { + Notifications.add("Challenge loaded", 1); + restartTest({ + nosave: true, + }); + } + }) + .catch((e) => { + Notifications.add("Failed to load challenge", -1); + console.error(e); + }); +}