From d2924fab4f56a969098cc4fbd225fba23f2fa825 Mon Sep 17 00:00:00 2001 From: haitaoo Date: Fri, 21 Jul 2023 18:24:30 +0800 Subject: [PATCH] refactor: Cancels the delayed handling of jump actions. --- ui/src/pages/Users/Login/index.tsx | 4 +- ui/src/utils/floppyNavigation.ts | 60 ++++++++++++++---------------- 2 files changed, 29 insertions(+), 35 deletions(-) diff --git a/ui/src/pages/Users/Login/index.tsx b/ui/src/pages/Users/Login/index.tsx index 56bcec78..69981843 100644 --- a/ui/src/pages/Users/Login/index.tsx +++ b/ui/src/pages/Users/Login/index.tsx @@ -93,8 +93,8 @@ const Index: React.FC = () => { } login(params) - .then((res) => { - passwordCaptcha.close(); + .then(async (res) => { + await passwordCaptcha.close(); updateUser(res); const userStat = guard.deriveLoginState(); if (userStat.isNotActivated) { diff --git a/ui/src/utils/floppyNavigation.ts b/ui/src/utils/floppyNavigation.ts index 707d5c48..7ed3a77b 100644 --- a/ui/src/utils/floppyNavigation.ts +++ b/ui/src/utils/floppyNavigation.ts @@ -94,42 +94,36 @@ export interface NavigateConfig { } const navigate = (to: string | number, config: NavigateConfig = {}) => { let { handler = 'href' } = config; - /** - * Note: Synchronised navigation can result in asynchronous actions such as page animations and state modifications not being completed. - */ - setTimeout(() => { - if (to && typeof to === 'string') { - if (equalToCurrentHref(to)) { - return; - } - /** - * 1. Blocking redirection of two login pages - * 2. Auto storage login redirect - * Note: The or judgement cannot be missing here, both jumps will be used - */ - if (to === RouteAlias.login || to === getLoginUrl()) { - storageLoginRedirect(); - } - - if (!isRoutableLink(to) && handler !== 'href' && handler !== 'replace') { - handler = 'href'; - } - if (handler === 'href' && config.options?.replace) { - handler = 'replace'; - } - if (handler === 'href') { - window.location.href = to; - } else if (handler === 'replace') { - window.location.replace(to); - } else if (typeof handler === 'function') { - handler(to, config.options); - } + if (to && typeof to === 'string') { + if (equalToCurrentHref(to)) { + return; + } + /** + * 1. Blocking redirection of two login pages + * 2. Auto storage login redirect + * Note: The or judgement cannot be missing here, both jumps will be used + */ + if (to === RouteAlias.login || to === getLoginUrl()) { + storageLoginRedirect(); } - if (typeof to === 'number' && typeof handler === 'function') { - handler(to); + if (!isRoutableLink(to) && handler !== 'href' && handler !== 'replace') { + handler = 'href'; } - }); + if (handler === 'href' && config.options?.replace) { + handler = 'replace'; + } + if (handler === 'href') { + window.location.href = to; + } else if (handler === 'replace') { + window.location.replace(to); + } else if (typeof handler === 'function') { + handler(to, config.options); + } + } + if (typeof to === 'number' && typeof handler === 'function') { + handler(to); + } }; /**