fix: block dashboard until initial store sync completes and show ETA
This commit is contained in:
35
src/App.js
35
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 (
|
||||
<>
|
||||
<div className="min-h-screen flex items-center justify-center bg-gray-100">
|
||||
<div className="text-center p-8 bg-white rounded-lg shadow">
|
||||
<p className="text-xl font-semibold text-gray-800 mb-2">Initialisiere...</p>
|
||||
<p className="text-gray-500">Bitte warte, bis alle Betriebe geprüft wurden.</p>
|
||||
</div>
|
||||
</div>
|
||||
<StoreSyncOverlay state={syncProgress} />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
if (loading) {
|
||||
return (
|
||||
<>
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
set -euo pipefail
|
||||
|
||||
# Optionaler erster Parameter als Git-Message
|
||||
MSG="${1:-Aktueller Stand}"
|
||||
# Alle übergebenen Argumente als Commit-Message (oder Fallback)
|
||||
if [[ $# -gt 0 ]]; then
|
||||
MSG="$*"
|
||||
else
|
||||
MSG="Aktueller Stand"
|
||||
fi
|
||||
|
||||
# Prüfen, ob Änderungen vorhanden sind
|
||||
# Nur committen, wenn es Änderungen gibt
|
||||
if [[ -n $(git status --porcelain) ]]; then
|
||||
echo "📦 Änderungen erkannt – committe mit Nachricht: '$MSG'"
|
||||
echo "📦 Committe mit Nachricht: '$MSG'"
|
||||
git add .
|
||||
git commit -m "$MSG"
|
||||
git push
|
||||
@@ -17,6 +21,4 @@ fi
|
||||
# Container neu bauen und starten
|
||||
echo "🐳 Starte Docker Compose Build & Up..."
|
||||
DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker compose up --build -d pickup-config-app
|
||||
|
||||
echo "🚀 Fertig!"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user