import { useState, type ReactNode } from "react"; import { Text, TextInput, TouchableOpacity, Alert, ActivityIndicator, KeyboardAvoidingView, Platform, ScrollView, } from "react-native"; import { useAuth } from "../context/AuthContext"; import { isStrongPassword } from "@cloud-reader/shared"; import { authStyles } from "./authStyles"; import { AuthFormError } from "./AuthFormError"; import { requireValidEmail } from "./authValidation"; export default function RegisterScreen({ navigation, }: { navigation: any; }): ReactNode { const { register } = useAuth(); const [username, setUsername] = useState(""); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [confirmPassword, setConfirmPassword] = useState(""); const [error, setError] = useState(null); const [submitting, setSubmitting] = useState(false); const handleRegister = async () => { setError(null); if (!username.trim()) { Alert.alert("Validation Error", "Please enter a username."); return; } if (!requireValidEmail(email)) { return; } if (!isStrongPassword(password)) { Alert.alert( "Validation Error", "Password must be at least 8 characters and include uppercase, lowercase, and a number.", ); return; } if (password !== confirmPassword) { Alert.alert("Validation Error", "Passwords do not match."); return; } setSubmitting(true); try { await register(email.trim(), username.trim(), password); } catch { setError("Could not create the account. Try a different email."); } finally { setSubmitting(false); } }; return ( Create Account Join Cloud Reader {error ? : null} {submitting ? ( ) : ( Create Account )} navigation.goBack()}> Already have an account?{" "} Sign In ); }