Fix logout resetting progress: auto-load cloud save after re-login
CI / build-and-push (push) Successful in 39s

After logout and re-login, the cloud save was never fetched because
useAuthGate.init() had already run with an anonymous token. Now
handleSetRegistered fetches and restores the cloud save when the user
becomes registered, so they return directly to their game.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-28 21:17:54 -04:00
parent f3e6a2e692
commit 8ef1226755
+23 -1
View File
@@ -111,13 +111,35 @@ export function useAuthGate(): AuthGateState {
} }
}, []); }, []);
const handleSetRegistered = useCallback((value: boolean) => { const handleSetRegistered = useCallback(async (value: boolean) => {
setRegistered(value); setRegistered(value);
const payload = getTokenPayload(); const payload = getTokenPayload();
if (payload) { if (payload) {
setAdmin(payload.role === 'admin'); setAdmin(payload.role === 'admin');
setPasswordReset(payload.mustResetPassword); setPasswordReset(payload.mustResetPassword);
} }
if (value) {
setLoading(true);
try {
const { save } = await api.saves.latest();
if (save && save.tickCount > 0) {
setCloudSave({
id: save.id,
companyName: save.companyName,
era: save.era,
tickCount: save.tickCount,
updatedAt: save.updatedAt,
});
if (save.gameData) {
useGameStore.setState(save.gameData as Record<string, unknown>);
}
}
} catch {
// No cloud save — user sees new game screen
} finally {
setLoading(false);
}
}
}, []); }, []);
const handleSetPasswordReset = useCallback((value: boolean) => { const handleSetPasswordReset = useCallback((value: boolean) => {