From 6eb0ab4235ddc9c8bdc8d36730fd314a99e8ebc3 Mon Sep 17 00:00:00 2001 From: xlsea Date: Wed, 27 Mar 2024 19:14:59 +0800 Subject: [PATCH] feat(projects): Prevent repeated pop-ups after login expiration --- src/service/request/index.ts | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/src/service/request/index.ts b/src/service/request/index.ts index 240707df..d6e1f5fb 100644 --- a/src/service/request/index.ts +++ b/src/service/request/index.ts @@ -10,6 +10,8 @@ const isHttpProxy = import.meta.env.DEV && import.meta.env.VITE_HTTP_PROXY === ' const { baseURL, otherBaseURL } = getServiceBaseURL(import.meta.env, isHttpProxy); interface InstanceState { + /** whether the request is logout */ + isLogout: boolean; /** whether the request is refreshing token */ isRefreshingToken: boolean; } @@ -62,18 +64,24 @@ export const request = createFlatRequest( // prevent the user from refreshing the page window.addEventListener('beforeunload', handleLogout); - window.$dialog?.error({ - title: 'Error', - content: response.data.msg, - positiveText: $t('common.confirm'), - maskClosable: false, - onPositiveClick() { - logoutAndCleanup(); - }, - onClose() { - logoutAndCleanup(); - } - }); + // prevent repeated pop-ups + if (!request.state.isLogout) { + request.state.isLogout = true; + window.$dialog?.error({ + title: 'Error', + content: response.data.msg, + positiveText: $t('common.confirm'), + maskClosable: false, + onPositiveClick() { + request.state.isLogout = false; + logoutAndCleanup(); + }, + onClose() { + request.state.isLogout = false; + logoutAndCleanup(); + } + }); + } return null; }