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',
|
||||
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
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user