diff --git a/src/App.js b/src/App.js index b8b2eaf..13f2393 100644 --- a/src/App.js +++ b/src/App.js @@ -32,6 +32,7 @@ function App() { block: false, etaSeconds: null }); + const [initializing, setInitializing] = useState(false); const weekdays = ['Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag', 'Sonntag']; const delay = useCallback((ms) => new Promise((resolve) => setTimeout(resolve, ms)), []); @@ -119,6 +120,7 @@ function App() { setAdminSettings(null); setAdminSettingsLoading(false); setAvailableCollapsed(true); + setInitializing(false); }, []); const handleUnauthorized = useCallback(() => { @@ -244,6 +246,7 @@ function App() { setLoading(true); setError(''); setStatus(''); + setInitializing(true); startSyncProgress('Anmeldung wird geprüft...', 5, true); const ticker = setInterval(() => nudgeSyncProgress('Anmeldung wird geprüft...', 2, 40), 1000); @@ -284,6 +287,7 @@ function App() { } finally { clearInterval(ticker); finishSyncProgress(); + setInitializing(false); setLoading(false); } }; @@ -461,11 +465,17 @@ function App() { let ticker; let cancelled = false; (async () => { + let storedToken = null; + try { + storedToken = localStorage.getItem(TOKEN_STORAGE_KEY); + } catch (err) { + console.warn('Konnte gespeicherten Token nicht lesen:', err); + } + if (!storedToken) { + return; + } + setInitializing(true); try { - const storedToken = localStorage.getItem(TOKEN_STORAGE_KEY); - if (!storedToken) { - return; - } startSyncProgress('Session wird wiederhergestellt...', 5, true); ticker = setInterval(() => nudgeSyncProgress('Session wird wiederhergestellt...', 1, 40), 1000); const result = await bootstrapSession(storedToken, { progress: { update: updateSyncProgress } }); @@ -485,12 +495,13 @@ function App() { } } } catch (err) { - console.warn('Konnte gespeicherten Token nicht lesen oder wiederherstellen:', err); + console.warn('Konnte Session nicht wiederherstellen:', err); } finally { if (ticker) { clearInterval(ticker); } finishSyncProgress(); + setInitializing(false); } })(); return () => { @@ -885,6 +896,20 @@ function App() { ); } + if (initializing) { + return ( + <> +
Initialisiere...
+Bitte warte, bis alle Betriebe geprüft wurden.
+