Files
birthday/apk/app/(auth)/login.tsx
2026-04-25 12:08:14 +02:00

150 lines
3.5 KiB
TypeScript

import React, { useState } from "react";
import { View, Text, TextInput, TouchableOpacity, StyleSheet } from "react-native";
import { useAuth } from "@/context/auth-context";
import { router } from "expo-router";
export default function AuthScreen() {
const [isLogin, setIsLogin] = useState(true);
return isLogin ? (
<LoginScreen onSwitch={() => setIsLogin(false)} />
) : (
<RegisterScreen onSwitch={() => setIsLogin(true)} />
);
}
function LoginScreen({ onSwitch }) {
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
const { login } = useAuth();
const handleLogin = async () => {
const loginResult = await login(email, password);
if (loginResult) {
console.log("Login successful");
router.replace("/(tabs)");
}
};
return (
<View style={styles.container}>
<Text style={styles.title}>Welcome Back</Text>
<TextInput
style={styles.input}
placeholder="Email"
value={email}
onChangeText={setEmail}
keyboardType="email-address"
autoCapitalize="none"
/>
<TextInput
style={styles.input}
placeholder="Password"
value={password}
onChangeText={setPassword}
secureTextEntry
/>
<TouchableOpacity style={styles.button} onPress={handleLogin}>
<Text style={styles.buttonText}>Login</Text>
</TouchableOpacity>
<TouchableOpacity onPress={onSwitch}>
<Text style={styles.link}>Don&apos;t have an account? Register</Text>
</TouchableOpacity>
</View>
);
}
function RegisterScreen({ onSwitch }) {
const [name, setName] = useState("");
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
const handleRegister = () => {
console.log("Register ->", { name, email, password });
};
return (
<View style={styles.container}>
<Text style={styles.title}>Create Account</Text>
<TextInput
style={styles.input}
placeholder="Full Name"
value={name}
onChangeText={setName}
/>
<TextInput
style={styles.input}
placeholder="Email"
value={email}
onChangeText={setEmail}
keyboardType="email-address"
autoCapitalize="none"
/>
<TextInput
style={styles.input}
placeholder="Password"
value={password}
onChangeText={setPassword}
secureTextEntry
/>
<TouchableOpacity style={styles.button} onPress={handleRegister}>
<Text style={styles.buttonText}>Register</Text>
</TouchableOpacity>
<TouchableOpacity onPress={onSwitch}>
<Text style={styles.link}>Already have an account? Login</Text>
</TouchableOpacity>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: "center",
padding: 20,
backgroundColor: "#f5f5f5",
},
title: {
fontSize: 28,
fontWeight: "bold",
marginBottom: 30,
textAlign: "center",
},
input: {
height: 50,
borderColor: "#ccc",
borderWidth: 1,
borderRadius: 10,
paddingHorizontal: 15,
marginBottom: 15,
backgroundColor: "#fff",
},
button: {
height: 50,
backgroundColor: "#4CAF50",
borderRadius: 10,
justifyContent: "center",
alignItems: "center",
marginTop: 10,
},
buttonText: {
color: "#fff",
fontSize: 16,
fontWeight: "bold",
},
link: {
marginTop: 15,
textAlign: "center",
color: "#007BFF",
},
});