import React, { useState, useCallback } from 'react'; import { View, Text, StyleSheet, KeyboardAvoidingView, Platform, ScrollView, Image, } from 'react-native'; import { router } from 'expo-router'; import { useAuth } from '@/contexts/AuthContext'; 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 LoginScreen() { const { requestOtp, isLoading, error, clearError } = useAuth(); const [email, setEmail] = useState(''); const [validationError, setValidationError] = useState(null); const validateEmail = (email: string): boolean => { const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return emailRegex.test(email); }; const handleContinue = useCallback(async () => { clearError(); setValidationError(null); const trimmedEmail = email.trim().toLowerCase(); if (!trimmedEmail) { setValidationError('Email is required'); return; } if (!validateEmail(trimmedEmail)) { setValidationError('Please enter a valid email address'); return; } const result = await requestOtp(trimmedEmail); if (result.success) { // Navigate to OTP verification screen router.push({ pathname: '/(auth)/verify-otp', params: { email: trimmedEmail, skipOtp: result.skipOtp ? '1' : '0' } }); } }, [email, requestOtp, clearError]); const displayError = validationError || error?.message; return ( {/* Logo / Header */} Welcome to WellNuo Enter your email to sign in or create an account {/* Form */} {displayError && ( { clearError(); setValidationError(null); }} /> )} { setEmail(text); setValidationError(null); }} autoCapitalize="none" autoCorrect={false} keyboardType="email-address" editable={!isLoading} onSubmitEditing={handleContinue} returnKeyType="done" />