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