import { router, useLocalSearchParams } from "expo-router"; import { useEffect, useState } from "react"; import { KeyboardAvoidingView, Platform, Pressable, ScrollView, StyleSheet, Text, View, } from "react-native"; import { FullScreen } from "@/components/Screen"; import { AuthBackground } from "@/components/AppBackground"; import { HeadingText } from "@/components/Logo"; import { Button } from "@/components/ui/Button"; import { Card } from "@/components/ui/Card"; import { Input } from "@/components/ui/Input"; import { fonts, radii, spacing } from "@/constants/theme"; import { useAppTheme } from "@/contexts/ThemeContext"; import { resetPassword } from "@/lib/auth-api"; import type { ThemeColors } from "@/lib/theme-palette"; import { useThemedStyles } from "@/lib/use-themed-styles"; export default function ResetPasswordScreen() { const styles = useThemedStyles(createResetPasswordStyles); const { token: tokenParam } = useLocalSearchParams<{ token?: string }>(); const [token, setToken] = useState(""); const [password, setPassword] = useState(""); const [confirmPassword, setConfirmPassword] = useState(""); const [error, setError] = useState(null); const [success, setSuccess] = useState(false); const [loading, setLoading] = useState(false); useEffect(() => { if (typeof tokenParam === "string" && tokenParam.length > 0) { setToken(tokenParam); } }, [tokenParam]); async function handleSubmit() { setError(null); if (password.length < 8) { setError("Password must be at least 8 characters"); return; } if (password !== confirmPassword) { setError("Passwords do not match"); return; } setLoading(true); try { await resetPassword(token.trim(), password); setSuccess(true); } catch (err) { setError(err instanceof Error ? err.message : "Reset failed"); } finally { setLoading(false); } } return ( router.back()}> ← Back Set new password Paste the reset token from your email, or open the link on this device. {success ? ( Password updated You can now sign in with your new password.