From c4fa91f6ea371c9199e81d2a3534c8adb0435309 Mon Sep 17 00:00:00 2001 From: Kevin Yue Date: Fri, 1 Sep 2023 11:35:22 +0800 Subject: [PATCH] refactor: support cancel during retry --- gpgui/src/atoms/connectPortal.ts | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/gpgui/src/atoms/connectPortal.ts b/gpgui/src/atoms/connectPortal.ts index aaab248..ddbb556 100644 --- a/gpgui/src/atoms/connectPortal.ts +++ b/gpgui/src/atoms/connectPortal.ts @@ -64,15 +64,20 @@ export const connectPortalAtom = atom( throw err; } - if (err instanceof AbnormalPortalConfigError) { - logger.info( - `Got abnormal portal config: ${err.message}, retrying...` - ); - prelogin = await portalService.prelogin(portal); - continue; - } else { + if (!(err instanceof AbnormalPortalConfigError)) { throw err; } + + logger.info( + `Got abnormal portal config: ${err.message}, retrying...` + ); + set(statusAtom, "prelogin"); + prelogin = await portalService.prelogin(portal); + const isProcessing = get(isProcessingAtom); + if (!isProcessing) { + logger.info("Operation cancelled"); + break; + } } } } else {