Untitled
unknown
plain_text
2 years ago
3.4 kB
3
Indexable
import React, { useState, useEffect } from 'react'; import AsyncStorage from '@react-native-async-storage/async-storage'; import { View, TextInput, Button, Text, StyleSheet } from 'react-native'; import LoginPage from './LoginPage'; const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', padding: 16, }, inputContainer: { flexDirection: 'row', alignItems: 'center', marginBottom: 10, width: '100%', }, label: { marginRight: 10, fontWeight: 'bold', width: 120, }, input: { flex: 1, borderWidth: 1, padding: 10, }, button: { width: '100%', marginTop: 10, }, buttonText: { color: 'white', textAlign: 'center', }, welcomeText: { marginBottom: 10, fontSize: 18, fontWeight: 'bold', }, }); const LoginScreen = ({ onLogin }) => { const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const handleLogin = async () => { try { const storedUsers = JSON.parse(await AsyncStorage.getItem('users')) || []; const existingUser = storedUsers.find(user => user.username === username); if (existingUser) { // User exists, check if the password is correct if (existingUser.password === password) { onLogin(existingUser.username); // Pass the username to onLogin } else { alert('Incorrect password'); } } else { // User does not exist, store the username and password const newUser = { username, password }; storedUsers.push(newUser); await AsyncStorage.setItem('users', JSON.stringify(storedUsers)); onLogin(newUser.username); // Pass the username to onLogin } } catch (error) { console.error('Error occurred during login:', error); alert('Login failed'); } }; return ( <View style={styles.container}> <View style={styles.inputContainer}> <Text style={styles.label}> USERNAME:</Text> <TextInput placeholder="Username" value={username} onChangeText={setUsername} style={styles.input} /> </View> <View style={styles.inputContainer}> <Text style={styles.label}> Password:</Text> <TextInput placeholder="Password" value={password} onChangeText={setPassword} secureTextEntry style={styles.input} /> </View> <Button title="Login" onPress={handleLogin} style={styles.button} color="blue" /> </View> ); }; const App = () => { const [isLoggedIn, setIsLoggedIn] = useState(false); const [username, setUsername] = useState(''); const [leaveReason, setLeaveReason] = useState(''); const handleLogin = (username) => { setIsLoggedIn(true); setUsername(username); }; const handleLogout = () => { setIsLoggedIn(false); setUsername(''); setLeaveReason(''); }; const handleEnterLeaveReason = (reason) => { setLeaveReason(reason); }; return ( <View style={styles.container}> {isLoggedIn ? ( <LoginPage onLogout={handleLogout} username={username} onEnterLeaveReason={handleEnterLeaveReason} /> ) : ( <LoginScreen onLogin={handleLogin} /> )} </View> ); }; export default App;
Editor is loading...