fix: possible freeze on login

Massimo Melina committed Mar 24, 2023 at 11:01 UTC b0ba82a4d6894b91e28892ef6211399584328598
1 file changed +5 -3
frontend/src/login.ts
+5 -3
@@ -48,9 +48,11 @@ export function logout(){
48 }
49
50 export let closeLoginDialog: undefined | (() => void)
51 +let lastPromise: Promise<any>
52 export async function loginDialog(navigate: ReturnType<typeof useNavigate>) {
52 - if (closeLoginDialog) return
53 - return new Promise(resolve => {
53 + return lastPromise = new Promise(resolve => {
54 + if (closeLoginDialog)
55 + return lastPromise
56 const closeDialog = closeLoginDialog = newDialog({
57 className: 'dialog-login',
58 icon: () => hIcon('login'),
@@ -137,7 +139,7 @@ export function useAuthorized() {
139 return closeLoginDialog?.()
140 if (closeLoginDialog) return
141 while (state.loginRequired)
140 - await loginDialog(navigate).then()
142 + await loginDialog(navigate)
143 })()
144 }, [loginRequired, navigate])
145 return loginRequired ? null : true