From: Thibaud Moustier Date: Sat, 28 Feb 2026 17:55:36 +0000 (+0100) Subject: Mobile : Update App.tsx + AuthScreen X-Git-Url: https://git.digitality.be/?a=commitdiff_plain;h=6e304be81451fef1e66b9cdce029d7624a5feb1c;p=pdw25-26 Mobile : Update App.tsx + AuthScreen --- diff --git a/Wallette/mobile/App.tsx b/Wallette/mobile/App.tsx index 1eb6981..8645062 100644 --- a/Wallette/mobile/App.tsx +++ b/Wallette/mobile/App.tsx @@ -22,8 +22,9 @@ import AboutScreen from "./src/screens/AboutScreen"; import AccountMenu from "./src/components/AccountMenu"; -import { loadSession, clearSession } from "./src/utils/sessionStorage"; +import { loadSession } from "./src/utils/sessionStorage"; import { hasSeenTutorial } from "./src/utils/tutorialStorage"; +import { logout as authLogout } from "./src/services/api/authApi"; export type RootStackParamList = { Dashboard: undefined; @@ -76,7 +77,7 @@ export default function App() { setReady(true); } - init(); + void init(); return () => { active = false; @@ -90,10 +91,11 @@ export default function App() { text: "Déconnexion", style: "destructive", onPress: async () => { - await clearSession(); + await authLogout(); setIsAuthed(false); setSessionEmail("—"); setNeedsTutorial(false); + setMenuVisible(false); }, }, ]); @@ -206,14 +208,14 @@ export default function App() { /> - {() => ( - { - // Force le tuto à s'afficher hors stack - setNeedsTutorial(true); - }} - /> - )} + {() => ( + { + // Force le tuto à s'afficher hors stack + setNeedsTutorial(true); + }} + /> + )} void }) { const [mode, setMode] = useState<"login" | "register">("login"); @@ -43,15 +45,9 @@ export default function AuthScreen({ onAuthenticated }: { onAuthenticated: () => if (!l) return setError("Veuillez entrer un email ou un nom d’utilisateur."); if (!p || p.length < 6) return setError("Mot de passe invalide (min 6)."); - const res = await verifyLogin({ login: l, password: p }); + const res = await authLogin({ login: l, password: p }); if (!res.ok) return setError(res.message); - await saveSession({ - userId: res.user.userId, - email: res.user.email, - createdAtMs: Date.now(), - }); - onAuthenticated(); }; @@ -65,11 +61,11 @@ export default function AuthScreen({ onAuthenticated }: { onAuthenticated: () => const p2 = password2; if (!isValidEmail(e)) return setError("Email invalide."); - if (!isValidUsername(u)) return setError("Username invalide (3-20, lettres/chiffres/_)."); + if (!isValidUsername(u)) return setError("Nom d’utilisateur invalide (3-20, lettres/chiffres/_)."); if (!p1 || p1.length < 6) return setError("Mot de passe trop court (min 6)."); if (p1 !== p2) return setError("Les mots de passe ne correspondent pas."); - const res = await createUser({ + const res = await authRegister({ email: e, username: u, displayName: d || undefined, @@ -78,13 +74,6 @@ export default function AuthScreen({ onAuthenticated }: { onAuthenticated: () => if (!res.ok) return setError(res.message); - // auto-login après création - await saveSession({ - userId: res.user.userId, - email: res.user.email, - createdAtMs: Date.now(), - }); - onAuthenticated(); }; @@ -102,9 +91,7 @@ export default function AuthScreen({ onAuthenticated }: { onAuthenticated: () => setError(null); }} > - - Connexion - + Connexion setError(null); }} > - - Créer un compte - + Créer un compte @@ -148,7 +133,7 @@ export default function AuthScreen({ onAuthenticated }: { onAuthenticated: () => - (Mode local sans API : destiné au développement / démo.) + (Mode local sans API serveur : destiné au développement / démo.) ) : ( @@ -205,7 +190,7 @@ export default function AuthScreen({ onAuthenticated }: { onAuthenticated: () => - (Sans API : stockage local + hash SHA-256 pour éviter le mot de passe en clair.) + (Sans API serveur : stockage local + hash SHA-256, pas de mot de passe en clair.) )}