import { useCallback, useState } from 'react'; import { ActivityIndicator, StyleSheet, View } from 'react-native'; import { StripeProvider } from '@stripe/stripe-react-native'; import { SafeAreaProvider } from 'react-native-safe-area-context'; import { colors } from './src/theme'; import { apiFetch } from './src/api'; import { useAuth } from './src/hooks/useAuth'; import LoginScreen from './src/screens/LoginScreen'; import LobbyScreen from './src/screens/LobbyScreen'; import TableScreen from './src/screens/TableScreen'; export default function App() { const { token, user, loading, login, logout, setUser } = useAuth(); const [selectedTable, setSelectedTable] = useState(null); const refreshUser = useCallback(async () => { if (!token) { return; } const data = await apiFetch('/api/me', token); setUser(data); }, [token, setUser]); if (loading) { return ( ); } return ( {!token || !user ? ( ) : selectedTable ? ( setSelectedTable(null)} /> ) : ( )} ); } const styles = StyleSheet.create({ loading: { flex: 1, alignItems: 'center', justifyContent: 'center', backgroundColor: colors.backgroundTop } });