import React, { useState } from "react"; import { View, ScrollView, Pressable, TextInput, ActivityIndicator, KeyboardAvoidingView, Platform, } from "react-native"; import { useSirouRouter } from "@sirou/react-native"; import { AppRoutes } from "@/lib/routes"; import { Text } from "@/components/ui/text"; import { Button } from "@/components/ui/button"; import { Mail, Lock, User, Phone, ArrowLeft, ArrowRight, TrianglePlanets, Eye, EyeOff, Chrome, Globe, } from "@/lib/icons"; import { ScreenWrapper } from "@/components/ScreenWrapper"; import { useAuthStore } from "@/lib/auth-store"; import { api } from "@/lib/api"; import { useColorScheme } from "nativewind"; import { toast } from "@/lib/toast-store"; import { useLanguageStore, AppLanguage } from "@/lib/language-store"; import { getPlaceholderColor } from "@/lib/colors"; import { LanguageModal } from "@/components/LanguageModal"; export default function RegisterScreen() { const nav = useSirouRouter(); const setAuth = useAuthStore((state) => state.setAuth); const { colorScheme } = useColorScheme(); const isDark = colorScheme === "dark"; const { language, setLanguage } = useLanguageStore(); const [languageModalVisible, setLanguageModalVisible] = useState(false); const [form, setForm] = useState({ firstName: "", lastName: "", email: "", phone: "", password: "", }); const [showPassword, setShowPassword] = useState(false); const [loading, setLoading] = useState(false); const handleRegister = async () => { const { firstName, lastName, email, phone, password } = form; if (!firstName || !lastName || !email || !phone || !password) { toast.error("Required Fields", "Please fill in all fields"); return; } setLoading(true); try { // Prepend +251 to the phone number for the API const formattedPhone = `+251${phone}`; const response = await api.auth.register({ body: { ...form, phone: formattedPhone, role: "VIEWER", }, }); // Store user, access token, and refresh token setAuth(response.user, response.accessToken, response.refreshToken); toast.success("Account Created!", "Welcome to Yaltopia."); nav.go("(tabs)"); } catch (err: any) { toast.error( "Registration Failed", err.message || "Failed to create account", ); } finally { setLoading(false); } }; const updateForm = (key: keyof typeof form, val: string) => setForm((prev) => ({ ...prev, [key]: val })); return ( setLanguageModalVisible(true)} className="p-2 rounded-full bg-card border border-border" > Create Account Join Yaltopia and start managing your business First Name updateForm("firstName", v)} /> Last Name updateForm("lastName", v)} /> Email Address updateForm("email", v)} autoCapitalize="none" keyboardType="email-address" /> Phone Number +251{" "} updateForm("phone", v)} keyboardType="phone-pad" /> Password updateForm("password", v)} secureTextEntry /> nav.go("login")} > Already have an account? Sign In setLanguage(lang)} onClose={() => setLanguageModalVisible(false)} /> ); }