v0.6.1: stop Anonymous Mode bouncing to sign-in on every foreground
All checks were successful
build-apk / build (push) Successful in 9m55s
All checks were successful
build-apk / build (push) Successful in 9m55s
Parking without an account showed "Your session expired — please sign in again." repeatedly and kicked the user back to the login screen. The 401 hook on the API client is global: it fires on every unauthorized response whether or not the caller caught the error. Anonymous Mode has no token, so any ParkSmarter call 401s, and two of them run automatically — discoverPaidSession() on open and every foreground, and the map's lastSessionLot() on every mount. Each one flipped the status to signedOut; re-entering anonymous mode ran them again, hence "over and over". Both call sites already caught their errors, which is why this hid: the bounce came from the client hook, not from the catch. - A 401 in Anonymous Mode is no longer treated as a session expiry. There is no session to expire, and bouncing to sign-in makes the mode pointless. This also covers the Sessions/Favorites/Scan tabs, which 401 the same way. - authBus carries the mode to the non-React modules that need it. - discoverPaidSession() and lastSessionLot() are skipped entirely when anonymous rather than fired and discarded. - "Last lot" now says it needs an account instead of silently doing nothing. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
148e1635d3
commit
7fc92d24e4
5 changed files with 35 additions and 6 deletions
|
|
@ -5,6 +5,7 @@ import type { NativeStackNavigationProp } from '@react-navigation/native-stack';
|
|||
import * as Notifications from 'expo-notifications';
|
||||
import type { Zone } from 'parksmarter-client';
|
||||
import { ps } from '@/api/client';
|
||||
import { authBus } from '@/auth/authBus';
|
||||
import { parseApiTime } from '@/api/parseTime';
|
||||
import type { LabelKind } from '@/api/zoneLabels';
|
||||
import type { RootStackParamList } from '@/navigation/RootNavigator';
|
||||
|
|
@ -326,8 +327,9 @@ export async function syncActiveParking(onExtend: (zone?: Zone) => void): Promis
|
|||
}
|
||||
|
||||
// A city-map session is never on the ParkSmarter server, so don't let a stale
|
||||
// server session overwrite it.
|
||||
if (!current) current = await discoverPaidSession();
|
||||
// server session overwrite it. In Anonymous Mode there is no account to ask at
|
||||
// all — asking anyway would 401 on every single foreground.
|
||||
if (!current && !authBus.isAnonymous) current = await discoverPaidSession();
|
||||
|
||||
if (current) {
|
||||
await postNotification(current);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue