import React, { useState } from 'react'; import { View, TextInput, Button, Text } from 'react-native'; import AsyncStorage from '@react-native-async-storage/async-storage'; import { useTailwind } from 'tailwind-rn'; import socket from './services/socket'; function LoginScreen({ navigation, setUserToken }) { const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [errorMessage, setErrorMessage] = useState(''); const tailwind = useTailwind(); async function loginUser() { try { setErrorMessage(''); const apiUrl = await AsyncStorage.getItem('apiEndpoint') const response = await fetch(`${apiUrl}/api/v1/app/auth/login`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ username, password }), }); if (!response.ok) { const errorText = await response.text(); console.error('Failed to login:', response.status, errorText); setErrorMessage(errorText); return; } const { token, userId } = await response.json(); await AsyncStorage.setItem('token', token); await AsyncStorage.setItem('userID', userId); setUserToken(token); setErrorMessage(''); navigation.navigate('Home'); } catch (error) { console.error('Network error:', error); setErrorMessage('Network error. Please try again later.'); } } return ( {errorMessage ? {errorMessage} : null}