From 3a3558ef17c7e15da1ad06911aae490b46ef9c90 Mon Sep 17 00:00:00 2001 From: Miodec Date: Fri, 11 Feb 2022 16:30:22 +0100 Subject: [PATCH] added page transition state module fixes 6 circular dependencies part of #2462 --- frontend/src/js/controllers/account-controller.js | 5 +++-- frontend/src/js/controllers/page-controller.js | 13 ++++--------- frontend/src/js/pages/account.js | 3 ++- frontend/src/js/states/page-transition.js | 9 +++++++++ frontend/src/js/test/test-logic.js | 10 +++++----- 5 files changed, 23 insertions(+), 17 deletions(-) create mode 100644 frontend/src/js/states/page-transition.js diff --git a/frontend/src/js/controllers/account-controller.js b/frontend/src/js/controllers/account-controller.js index 04c583656..ba574d647 100644 --- a/frontend/src/js/controllers/account-controller.js +++ b/frontend/src/js/controllers/account-controller.js @@ -13,6 +13,7 @@ import axiosInstance from "../axios-instance"; import * as PSA from "../elements/psa"; import * as Focus from "../test/focus"; import * as Loader from "../elements/loader"; +import * as PageTransition from "./../states/page-transition"; export const gmailProvider = new firebase.auth.GoogleAuthProvider(); // const githubProvider = new firebase.auth.GithubAuthProvider(); @@ -40,7 +41,7 @@ async function loadUser(user) { `

Your account is not verified. Send the verification email again.` ); } - PageController.setTransition(false); + PageTransition.set(false); AccountButton.update(); AccountButton.loading(true); await Account.getDataAndInit(); @@ -80,7 +81,7 @@ const authListener = firebase.auth().onAuthStateChanged(async function (user) { if (window.location.pathname == "/account") { window.history.replaceState("", null, "/login"); } - PageController.setTransition(false); + PageTransition.set(false); } if (window.location.pathname == "/login" && user) { PageController.change("account"); diff --git a/frontend/src/js/controllers/page-controller.js b/frontend/src/js/controllers/page-controller.js index 6771e7659..000023a26 100644 --- a/frontend/src/js/controllers/page-controller.js +++ b/frontend/src/js/controllers/page-controller.js @@ -7,15 +7,10 @@ import * as PageTest from "./../pages/test"; import * as PageAbout from "./../pages/about"; import * as PageLogin from "./../pages/login"; import * as PageLoading from "./../pages/loading"; - -export let transition = true; - -export function setTransition(val) { - transition = val; -} +import * as PageTransition from "./../states/page-transition"; export function change(page) { - if (transition) { + if (PageTransition.get()) { console.log(`change page ${page} stopped`); return; } @@ -58,13 +53,13 @@ export function change(page) { ActivePage.set(undefined); $(".page").removeClass("active"); previousPage?.beforeHide(); - setTransition(true); + PageTransition.set(true); Misc.swapElements( previousPage.element, nextPage.element, 250, () => { - setTransition(false); + PageTransition.set(false); ActivePage.set(nextPage.name); previousPage?.afterHide(); nextPage.element.addClass("active"); diff --git a/frontend/src/js/pages/account.js b/frontend/src/js/pages/account.js index a0dd2f79f..73bee1167 100644 --- a/frontend/src/js/pages/account.js +++ b/frontend/src/js/pages/account.js @@ -24,6 +24,7 @@ import axiosInstance from "../axios-instance"; import * as TodayTracker from "./../test/today-tracker"; import * as ActivePage from "../states/active-page"; import * as TestActive from "./../states/test-active"; +import * as PageTransition from "./../states/page-transition"; import Page from "./page"; let filterDebug = false; @@ -243,7 +244,7 @@ export async function getDataAndInit() { TagController.loadActiveFromLocalStorage(); ResultTagsPopup.updateButtons(); Settings.showAccountSection(); - PageController.setTransition(false); + PageTransition.set(false); console.log("account loading finished"); // if (ActivePage.get() == "loading") { // LoadingPage.updateBar(100, true); diff --git a/frontend/src/js/states/page-transition.js b/frontend/src/js/states/page-transition.js new file mode 100644 index 000000000..0b0ac6b12 --- /dev/null +++ b/frontend/src/js/states/page-transition.js @@ -0,0 +1,9 @@ +let transition = true; + +export function set(val) { + transition = val; +} + +export function get() { + return transition; +} diff --git a/frontend/src/js/test/test-logic.js b/frontend/src/js/test/test-logic.js index 8d5848415..57362ef90 100644 --- a/frontend/src/js/test/test-logic.js +++ b/frontend/src/js/test/test-logic.js @@ -17,7 +17,6 @@ import * as LiveWpm from "./live-wpm"; import * as LiveAcc from "./live-acc"; import * as LiveBurst from "./live-burst"; import * as TimerProgress from "./timer-progress"; -import * as PageController from "./../controllers/page-controller"; import * as QuoteSearchPopup from "../popups/quote-search-popup"; import * as QuoteSubmitPopup from "../popups/quote-submit-popup"; import * as PbCrown from "./pb-crown"; @@ -44,6 +43,7 @@ import * as TestInput from "./test-input"; import * as TestWords from "./test-words"; import * as TestState from "./test-state"; import * as ModesNotice from "./../elements/modes-notice"; +import * as PageTransition from "./../states/page-transition"; const objecthash = require("node-object-hash")().hash; @@ -222,7 +222,7 @@ export function punctuateWord(previousWord, currentWord, index, maxindex) { } export function startTest() { - if (PageController.transition) { + if (PageTransition.get()) { return false; } if (!Config.dbConfigLoaded) { @@ -392,14 +392,14 @@ export function restart( if (TestUI.resultVisible) { if ( Config.randomTheme !== "off" && - !PageController.transition && + !PageTransition.get() && !Config.customTheme ) { ThemeController.randomizeTheme(); } } TestUI.setResultVisible(false); - PageController.setTransition(true); + PageTransition.set(true); TestUI.setTestRestarting(true); el.stop(true, true).animate( { @@ -555,7 +555,7 @@ export function restart( TestUI.focusWords(); // ChartController.result.update(); ModesNotice.update(); - PageController.setTransition(false); + PageTransition.set(false); // console.log(TestStats.incompleteSeconds); // console.log(TestStats.restartCount); }