summaryrefslogtreecommitdiff
path: root/ui/lib/session.svelte.js
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2025-04-23 22:19:24 -0400
committerOwen Jacobson <owen@grimoire.ca>2025-04-23 22:19:24 -0400
commit713afd0b4963460cc37b3767c6b542c8c828d227 (patch)
tree5156b6874cdd3cde684b4719d5e8fe1500b47612 /ui/lib/session.svelte.js
parent1ebe642ebe7c9ba72eb1713ec21f0cd03949a47f (diff)
parent4d6cc62f0c9bb5d50720c83fb1ecbd0889d2acd3 (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.js24
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;
+ }
}
}