import { supabase } from "@/libs/supabase" import { Link, Stack } from "expo-router" import { useState } from "react" import { Pressable, Text, TextInput, View } from 'react-native' import { useAppTheme } from "@/src/theme/AppThemeProvider" import { signupScreenStyles as styles } from "@/src/styles/app-styles" export default function SignupScreen(){ const [email, setEmail] = useState('') const [password, setPassword] = useState('') const [errorMessage, setErrorMessage] = useState(null) const [successMessage, setSuccessMessage] = useState(null) const [isSubmitting, setIsSubmitting] = useState(false) const { colorScheme, palette } = useAppTheme() const onSignup = async () => { if(!email.trim() || !password){ setErrorMessage('Sign up using email and password') return } setIsSubmitting(true) setErrorMessage(null) setSuccessMessage(null) const { data, error } = await supabase.auth.signUp({ email: email.trim(), password }) if(error){ setErrorMessage(error.message) } else if (data.session) { const user = data.user if (user) { const { error: profileError } = await supabase .from('profiles') .upsert({ id: user.id, email: user.email ?? email.trim(), }) if (profileError) { setErrorMessage(profileError.message) } } } if (!error && data.session) { setSuccessMessage('Account created. You are now signed in.') } else if (!error) { setSuccessMessage('Account created. Check your email to confirm the signup.') } setIsSubmitting(false) } return ( <> Sign up E-mail Password {errorMessage ? ( {errorMessage} ) : null} {successMessage ? ( {successMessage} ) : null} [ styles.actionButton, pressed && !isSubmitting ? styles.actionButtonPressed : null, isSubmitting ? styles.actionButtonDisabled : null, ]} > {isSubmitting ? 'Creating account...' : 'Sign up'} Already have an account? Log in ) }