Fix logout resetting progress: auto-load cloud save after re-login
CI / build-and-push (push) Successful in 39s
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:
@@ -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) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user