diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2025-04-23 22:19:24 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2025-04-23 22:19:24 -0400 |
| commit | 713afd0b4963460cc37b3767c6b542c8c828d227 (patch) | |
| tree | 5156b6874cdd3cde684b4719d5e8fe1500b47612 /ui/lib/session.svelte.js | |
| parent | 1ebe642ebe7c9ba72eb1713ec21f0cd03949a47f (diff) | |
| parent | 4d6cc62f0c9bb5d50720c83fb1ecbd0889d2acd3 (diff) | |
Retry boot every five seconds.
Merged in spite of misgivings. This method will loop over the request until it completes, even if the user moves to a view where the response is no longer relevant.
Diffstat (limited to 'ui/lib/session.svelte.js')
| -rw-r--r-- | ui/lib/session.svelte.js | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/ui/lib/session.svelte.js b/ui/lib/session.svelte.js index b953d9c..21a391d 100644 --- a/ui/lib/session.svelte.js +++ b/ui/lib/session.svelte.js @@ -94,16 +94,20 @@ class Session { } async function bootOrNavigate(navigateTo) { - const response = await api.boot(); - switch (response.status) { - case 401: - await navigateTo('/login'); - break; - case 503: - await navigateTo('/setup'); - break; - case 200: - return response.data; + try { + const response = await api.retry(async () => await api.boot()); + return response.data; + } catch (err) { + switch (true) { + case err instanceof api.LoggedOut: + await navigateTo('/login'); + break; + case err instanceof api.SetupRequired: + await navigateTo('/setup'); + break; + default: + throw err; + } } } |
