import { router } from 'expo-router'; import { useState } from 'react'; import { KeyboardAvoidingView, Platform, ScrollView, StyleSheet, Text, View, } from 'react-native'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import { LabeledField } from '../../src/components/LabeledField'; import { PrimaryButton } from '../../src/components/PrimaryButton'; import { useApp } from '../../src/context/AppContext'; import { colors } from '../../src/theme/colors'; export default function RegisterScreen() { const insets = useSafeAreaInsets(); const app = useApp(); const [name, setName] = useState(''); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [err, setErr] = useState(null); const [loading, setLoading] = useState(false); const [info, setInfo] = useState(null); if (app.runtimeMode !== 'cloud' || !app.supabase) { return ( Configurez d’abord Supabase dans Réglages. router.replace('/(tabs)/reglages')} /> ); } return ( {err ? {err} : null} {info ? {info} : null} { setErr(null); setInfo(null); setLoading(true); const r = await app.signUp(email.trim(), password, name.trim()); setLoading(false); if (r.error) { setErr(r.error); return; } setInfo( 'Si la confirmation e-mail est activée sur votre projet, vérifiez votre boîte avant de vous connecter.', ); }} /> router.back()} containerStyle={{ marginTop: 12 }} /> ); } const styles = StyleSheet.create({ box: { flex: 1, padding: 20, backgroundColor: colors.bg, gap: 12 }, err: { color: colors.danger, marginBottom: 12 }, info: { color: colors.flash, marginBottom: 12, lineHeight: 20 }, });