import React, { useState, useRef } from 'react'; import { View, Text, StyleSheet, KeyboardAvoidingView, ScrollView, Platform, Alert, TouchableWithoutFeedback, Keyboard, } from 'react-native'; import { SafeAreaView } from 'react-native-safe-area-context'; import { StatusBar } from 'expo-status-bar'; import { useAuth } from '../../contexts/AuthContext'; import Button from '../../components/Button'; import Input from '../../components/Input'; import Logo from '../../components/Logo'; import { COLORS } from '../../constants/colors'; const RegisterScreen = ({ navigation }) => { const [formData, setFormData] = useState({ phone: '', name: '', password: '', confirmPassword: '', }); const [errors, setErrors] = useState({}); const { register, isLoading } = useAuth(); const nameInputRef = useRef(null); const passwordInputRef = useRef(null); const confirmPasswordInputRef = useRef(null); const updateField = (field, value) => { setFormData(prev => ({ ...prev, [field]: value })); // Clear error when user starts typing if (errors[field]) { setErrors(prev => ({ ...prev, [field]: '' })); } }; const validateForm = () => { const newErrors = {}; if (!formData.phone.trim()) { newErrors.phone = 'Telefon belgisi gerek'; } else if (!/^\d{8}$/.test(formData.phone.trim())) { newErrors.phone = 'Telefon belgisi 8 sanly bolmaly (mysal: 61909090)'; } if (!formData.name.trim()) { newErrors.name = 'Ady gerek'; } else if (formData.name.trim().length < 2) { newErrors.name = 'Ady azyndan 2 harp bolmaly'; } if (!formData.password.trim()) { newErrors.password = 'Parol gerek'; } else if (formData.password.length < 6) { newErrors.password = 'Parol azyndan 6 harp bolmaly'; } if (!formData.confirmPassword.trim()) { newErrors.confirmPassword = 'Paroly tassyklaň'; } else if (formData.password !== formData.confirmPassword) { newErrors.confirmPassword = 'Parollar deň däl'; } setErrors(newErrors); return Object.keys(newErrors).length === 0; }; const handleRegister = async () => { if (!validateForm()) return; const result = await register( formData.phone.trim(), formData.name.trim(), formData.password ); if (result.success) { // Navigation will be handled by AuthContext } else { Alert.alert('Ýalňyşlyk', result.error); } }; const navigateToLogin = () => { navigation.replace('Login'); }; return ( TBBANK ONLINE Agza bol Täze hasap döretmek üçin maglumatyňyzy giriziň updateField('phone', value)} placeholder="61909090" keyboardType="numeric" leftIcon="call" error={errors.phone} maxLength={8} returnKeyType="next" onSubmitEditing={() => nameInputRef.current?.focus()} /> updateField('name', value)} placeholder="Doly adyňyzy giriziň" leftIcon="person" error={errors.name} returnKeyType="next" onSubmitEditing={() => passwordInputRef.current?.focus()} /> updateField('password', value)} placeholder="Parolyňyzy giriziň" secureTextEntry leftIcon="lock-closed" error={errors.password} returnKeyType="next" onSubmitEditing={() => confirmPasswordInputRef.current?.focus()} /> updateField('confirmPassword', value)} placeholder="Paroly gaýtadan giriziň" secureTextEntry leftIcon="lock-closed" error={errors.confirmPassword} returnKeyType="done" onSubmitEditing={handleRegister} />