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