import { Button } from '@/components/ui/Button'; import { ErrorMessage } from '@/components/ui/ErrorMessage'; import { Input } from '@/components/ui/Input'; import { AppColors, FontSizes, Spacing } from '@/constants/theme'; import { useAuth } from '@/contexts/AuthContext'; import { router } from 'expo-router'; import React, { useEffect, useState } from 'react'; import { Image, KeyboardAvoidingView, Platform, ScrollView, StyleSheet, Text, View, } from 'react-native'; export default function LoginScreen() { const { checkEmail, requestOtp, isLoading, error, clearError } = useAuth(); const [email, setEmail] = useState(''); const [validationError, setValidationError] = useState(null); // Clear errors on mount useEffect(() => { console.log('[LoginScreen] Mounted'); clearError(); }, []); const validateEmail = (email: string): boolean => { const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return emailRegex.test(email); }; const handleContinue = async () => { // Clear previous errors clearError(); setValidationError(null); const trimmedEmail = email.trim().toLowerCase(); // Validate email if (!trimmedEmail) { setValidationError('Email is required'); return; } if (!validateEmail(trimmedEmail)) { setValidationError('Please enter a valid email address'); return; } console.log('[Login] Checking email:', trimmedEmail); // Check if email exists in database const result = await checkEmail(trimmedEmail); console.log('[Login] Result:', JSON.stringify(result)); // Navigate based on result if (result.skipOtp) { // Dev account - skip OTP console.log('[Login] -> verify-otp (skip OTP)'); router.push({ pathname: '/(auth)/verify-otp', params: { email: trimmedEmail, skipOtp: '1', isNewUser: '0' } }); return; } // Direct OTP Flow (Streamlined) console.log('[Login] Requesting OTP...'); const otpResult = await requestOtp(trimmedEmail); if (otpResult.success) { console.log('[Login] OTP sent -> verify-otp'); router.push({ pathname: '/(auth)/verify-otp', params: { email: trimmedEmail, isNewUser: result.exists ? '0' : '1', // Partner code input was skipped to streamline flow } }); } else { setValidationError('Failed to send verification code. Please try again.'); } }; const displayError = validationError || error?.message; return ( Welcome to WellNuo Enter your email to sign in or create an account {displayError && ( { clearError(); setValidationError(null); }} /> )} { setEmail(text); setValidationError(null); }} autoCapitalize="none" autoCorrect={false} keyboardType="email-address" editable={!isLoading} onSubmitEditing={handleContinue} returnKeyType="done" />