Files
matrix-frontend/app/login.tsx
T
2025-09-13 12:12:23 +02:00

76 lines
2.6 KiB
TypeScript

import React, {useEffect, useState} from "react";
import ThemedBackground from "../src/components/themed/ThemedBackground";
import Logo from "../src/components/Logo";
import ThemedHeader from "../src/components/themed/ThemedHeader";
import ThemedButton from "../src/components/themed/ThemedButton";
import ThemedTextInput from "../src/components/themed/ThemedTextInput";
import BackButton from "../src/components/BackButton";
import {useAuth} from "@/src/context/AuthProvider";
import {useRouter} from "expo-router";
import ThemeToggleButton from "@/src/components/ThemeToggleButton";
import PasswordInput from "@/src/components/PasswordInput";
export default function LoginScreen() {
const {isAuthenticated, login, logout, error} = useAuth();
const router = useRouter();
const [username, setUsername] = useState("");
const [password, setPassword] = useState("");
useEffect(() => {
console.log(isAuthenticated);
if (isAuthenticated) {
console.log("User ist eingeloggt, weiterleiten...");
router.replace("/");
}
}, [isAuthenticated]);
const onLoginPressed = async () => {
console.log("Login wird ausgeführt...")
await login(username, password);
};
if (isAuthenticated) {
return (
<ThemedBackground>
<Logo/>
<ThemedHeader>Du bist bereits eingeloggt. Was machst'n hier?</ThemedHeader>
<ThemedButton mode="contained" onPress={logout} title={"Logout"} />
<ThemedButton mode="outlined" onPress={() => router.push("/")} title={"Zurück"} />
</ThemedBackground>
)
}
return (
<ThemedBackground>
<BackButton goBack={router.back}/>
<Logo/>
<ThemedHeader>Hello.</ThemedHeader>
<ThemedTextInput
label="Username"
returnKeyType="next"
value={username}
onChangeText={setUsername}
error={!!error && error?.field === "username" }
errorText={error?.message}
autoCapitalize="none"
/>
<PasswordInput
label="Password"
returnKeyType="done"
value={password}
onChangeText={setPassword}
error={!!error && error?.field === "password" }
errorText={error?.message}
autoComplete="password"
/>
<ThemedButton mode="outlined" onPress={onLoginPressed} title={"Login"} />
<ThemeToggleButton />
</ThemedBackground>
);
}