mirror of
https://github.com/siop-spelev/siop2.git
synced 2026-08-08 20:51:53 +00:00
apps/mobile (Expo SDK 57, TS strict, workspace pnpm) : connexion e-mail/mdp + sélecteur démo ADR-002 (uniquement si l'API l'expose), tabbar de la maquette validée (onglets futurs marqués R4.2/R4.3), « Ma journée » triée priorité puis échéance (fonction pure testée), urgence en tête, pastille de synchro. D1 en actes (lecture) : cache TanStack persisté dans AsyncStorage (7 jours), NetInfo → onlineManager + bandeau hors-ligne horodaté ; jeton en SecureStore ; tokens light/dark répliqués et testés ; client typé régénéré depuis docs/openapi.json (règle d'or). API : CORS_ORIGINS opt-in (vide par défaut) — Expo web/debug seulement, le web de prod reste derrière le proxy, les apps natives n'ont pas d'Origin. Vérifié 10/10 en Expo web piloté (connexion démo Ahmed → Ma journée scopée → hors-ligne servie du cache → retour) ; 6 tests jest-expo ; lint racine étendu (react-hooks) ; job CI mobile, deploy en dépend. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
21 lines
736 B
TypeScript
21 lines
736 B
TypeScript
import { Redirect } from 'expo-router';
|
|
import { ActivityIndicator, View } from 'react-native';
|
|
import { useMe } from '@/auth/session';
|
|
import { useTokens } from '@/theme/tokens';
|
|
|
|
/** Aiguillage : session valide → Ma journée ; sinon → connexion.
|
|
* (Hors-ligne avec cache persisté, /users/me sort du cache : on entre.) */
|
|
export default function Aiguillage() {
|
|
const t = useTokens();
|
|
const { data: me, isLoading } = useMe();
|
|
|
|
if (isLoading) {
|
|
return (
|
|
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center', backgroundColor: t.fond }}>
|
|
<ActivityIndicator color={t.primaire} />
|
|
</View>
|
|
);
|
|
}
|
|
return me ? <Redirect href="/(tabs)/journee" /> : <Redirect href="/connexion" />;
|
|
}
|