import React, { useState, useCallback } from 'react'; import { View, Text, StyleSheet, KeyboardAvoidingView, Platform, ScrollView, } from 'react-native'; import { router, useLocalSearchParams } from 'expo-router'; import { Ionicons } from '@expo/vector-icons'; import { useAuth } from '@/contexts/AuthContext'; import { api } from '@/services/api'; import { Button } from '@/components/ui/Button'; import { Input } from '@/components/ui/Input'; import { ErrorMessage } from '@/components/ui/ErrorMessage'; import { AppColors, BorderRadius, FontSizes, Spacing } from '@/constants/theme'; export default function CompleteProfileScreen() { const { email } = useLocalSearchParams<{ email: string }>(); const { refreshAuth } = useAuth(); const [firstName, setFirstName] = useState(''); const [lastName, setLastName] = useState(''); const [phone, setPhone] = useState(''); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(null); const handleComplete = useCallback(async () => { setError(null); // Validate if (!firstName.trim()) { setError('Please enter your first name'); return; } if (!lastName.trim()) { setError('Please enter your last name'); return; } setIsLoading(true); try { const response = await api.updateProfile({ firstName: firstName.trim(), lastName: lastName.trim(), phone: phone.trim() || undefined, }); if (response.ok) { // Refresh auth state and go to main app await refreshAuth(); router.replace('/(tabs)'); } else { setError(response.error?.message || 'Failed to update profile'); } } catch (err) { setError('Something went wrong. Please try again.'); } finally { setIsLoading(false); } }, [firstName, lastName, phone, refreshAuth]); return ( {/* Header */} Complete your profile Just a few more details to get you started {/* Form */} {error && ( setError(null)} /> )} { setFirstName(text); setError(null); }} autoCapitalize="words" autoCorrect={false} editable={!isLoading} /> { setLastName(text); setError(null); }} autoCapitalize="words" autoCorrect={false} editable={!isLoading} />