import React, { useState } from 'react'; import { View, StyleSheet, KeyboardAvoidingView, Platform, ScrollView, TouchableOpacity } from 'react-native'; import { NativeStackNavigationProp } from '@react-navigation/native-stack'; import { RootStackParamList } from '../navigation/AppNavigator'; import { Typography } from '../components/ui/Typography'; import { Input } from '../components/ui/Input'; import { OtpInput } from '../components/ui/OtpInput'; import { Button } from '../components/ui/Button'; import { authService } from '../services/authService'; import AsyncStorage from '@react-native-async-storage/async-storage'; import { HeartHandshake } from 'lucide-react-native'; type LoginScreenNavigationProp = NativeStackNavigationProp; interface LoginScreenProps { navigation: LoginScreenNavigationProp; } export const LoginScreen: React.FC = ({ navigation }) => { const [phone, setPhone] = useState('+91'); const [otp, setOtp] = useState(''); const [step, setStep] = useState<'PHONE' | 'OTP'>('PHONE'); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(''); const handleLogin = async () => { if (step === 'PHONE') { if (!phone || phone.length < 10) { setError('Please enter a valid phone number'); return; } setIsLoading(true); setError(''); try { const response = await authService.login(phone); console.log('OTP sent:', response); setStep('OTP'); } catch (err: any) { console.error('Login failed:', err); setError('Failed to send OTP. Please check your number and try again.'); } finally { setIsLoading(false); } } else { if (!otp || otp.length < 4) { setError('Please enter a valid OTP'); return; } setIsLoading(true); setError(''); try { const response = await authService.verifyOtp(phone, otp); console.log('OTP verified successfully:', response); // Save the token if (response.data && response.data.accessToken) { await AsyncStorage.setItem('token', response.data.accessToken); } else if (response.token) { await AsyncStorage.setItem('token', response.token); } navigation.replace('MainTabs'); } catch (err: any) { console.error('OTP verification failed:', err); setError('Invalid OTP. Please try again.'); } finally { setIsLoading(false); } } }; return ( Caregiver Portal Sign in to view your schedule, manage patient care, and stay connected. {error ? ( {error} ) : null} {step === 'PHONE' ? ( ) : ( Enter OTP )}