fix: await store sync using fresh token during login/init flow

This commit is contained in:
root
2025-11-09 16:35:13 +01:00
parent 30e78d7682
commit cc0d83430d

View File

@@ -276,7 +276,8 @@ function App() {
reason: 'login-auto',
startJob: !bootstrapResult?.storeRefreshJob,
reuseOverlay: true,
block: true
block: true,
tokenOverride: data.token
});
}
updateSyncProgress('Login abgeschlossen', 98);
@@ -334,14 +335,15 @@ function App() {
}
}, [session?.token, authorizedFetch]);
const fetchStoresList = useCallback(async () => {
if (!session?.token) {
const fetchStoresList = useCallback(async (tokenOverride) => {
const tokenToUse = tokenOverride || session?.token;
if (!tokenToUse) {
return;
}
setStatus('');
setError('');
try {
const response = await authorizedFetch('/api/stores');
const response = await authorizedFetch('/api/stores', {}, tokenToUse);
if (!response.ok) {
throw new Error(`HTTP ${response.status}`);
}
@@ -355,8 +357,9 @@ function App() {
}, [session?.token, authorizedFetch]);
const syncStoresWithProgress = useCallback(
async ({ block = false, reason = 'manual', startJob = true, reuseOverlay = false } = {}) => {
if (!session?.token) {
async ({ block = false, reason = 'manual', startJob = true, reuseOverlay = false, tokenOverride } = {}) => {
const effectiveToken = tokenOverride || session?.token;
if (!effectiveToken) {
return;
}
if (!reuseOverlay) {
@@ -372,7 +375,7 @@ function App() {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ force: true, reason })
});
}, effectiveToken);
if (!response.ok) {
throw new Error(`HTTP ${response.status}`);
}
@@ -386,7 +389,7 @@ function App() {
let completed = false;
while (!completed) {
const statusResp = await authorizedFetch('/api/stores/refresh/status');
const statusResp = await authorizedFetch('/api/stores/refresh/status', {}, effectiveToken);
if (!statusResp.ok) {
throw new Error(`HTTP ${statusResp.status}`);
}
@@ -430,8 +433,8 @@ function App() {
}
}
await fetchStoresList();
await fetchConfig(undefined, { silent: true });
await fetchStoresList(effectiveToken);
await fetchConfig(effectiveToken, { silent: true });
setStatus('Betriebe aktualisiert.');
setTimeout(() => setStatus(''), 3000);
} catch (err) {
@@ -490,7 +493,8 @@ function App() {
reason: 'session-auto',
startJob: !result?.storeRefreshJob,
reuseOverlay: true,
block: true
block: true,
tokenOverride: storedToken
});
}
}