import { Controller, useForm } from "react-hook-form" import { StyleSheet } from "react-native" import { Button, HelperText, TextInput } from "react-native-paper" import { SafeAreaView } from "react-native-safe-area-context" import { useMemo } from "react" import type { UserRegisterData } from "@/domain/entities/User" import { useAuthentication } from "@/presentation/react/contexts/Authentication" const RegisterPage: React.FC = () => { const { register, authenticationPresenter } = useAuthentication() const { control, handleSubmit } = useForm({ defaultValues: { displayName: "", email: "", password: "", }, }) const onSubmit = async (data: unknown): Promise => { await authenticationPresenter.register(data) } const helperMessage = useMemo(() => { if (register.state === "error") { if (register.errors.fields.includes("displayName")) { return "Display Name is required." } if (register.errors.fields.includes("email")) { return "Invalid email." } if (register.errors.fields.includes("password")) { return "Password must be at least 6 characters." } return "Invalid credentials." } // if (register.state === "success") { // return "Success! Please verify your email." // } return "" }, [register.errors.fields, register.state]) return ( { return ( ) }} name="displayName" /> { return ( ) }} name="email" /> { return ( ) }} name="password" /> {helperMessage} ) } const styles = StyleSheet.create({ container: { flex: 1, alignItems: "center", justifyContent: "center", }, input: { width: "80%", marginBottom: 10, }, helperText: { fontSize: 18, marginVertical: 20, }, }) export default RegisterPage