import { useState } from 'react'; import { View, Text, TextInput, TouchableOpacity, ActivityIndicator, } from 'react-native'; import { useRouter } from 'expo-router'; import { SafeAreaView } from 'react-native-safe-area-context'; import { useTranslation } from 'react-i18next'; import { useAuthStore } from '../../stores/auth'; import { KeyboardAwareScreen } from '../../components/KeyboardAwareScreen'; const INPUT_STYLE = { fontSize: 16, lineHeight: 22, paddingVertical: 14, paddingHorizontal: 16, color: '#0a0a0a', fontFamily: 'Nunito_400Regular', } as const; export default function NewPasswordScreen() { const router = useRouter(); const { t } = useTranslation(); const { updatePassword, signOut } = useAuthStore(); const [password, setPassword] = useState(''); const [confirm, setConfirm] = useState(''); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [saved, setSaved] = useState(false); const onSubmit = async () => { if (!password || !confirm) return; if (password.length < 8) { setError(t('auth.passwordMin8')); return; } if (password !== confirm) { setError(t('auth.newPasswordMismatch')); return; } setError(null); setLoading(true); const res = await updatePassword(password); setLoading(false); if (res.error) { setError(res.error); return; } setSaved(true); router.replace('/(app)'); }; const onCancel = async () => { await signOut(); router.replace('/(auth)/signin'); }; return ( {t('auth.newPasswordTitle')} {t('auth.newPasswordSubtitle')} {error && ( {error} )} {saved && ( {t('auth.newPasswordSaved')} )} {loading ? ( ) : ( {t('auth.newPasswordSave')} )} {t('auth.newPasswordCancelLink')} ); }