import React, { useState, useEffect, useCallback } from 'react' import { View, Text, TouchableOpacity, StyleSheet, SafeAreaView, StatusBar } from 'react-native' import { AuthProvider, useAuth } from './src/components/AuthProvider' import { getStoredToken } from './src/services/api' import LoginScreen from './src/screens/LoginScreen' import HomeScreen from './src/screens/HomeScreen' import FeedScreen from './src/screens/FeedScreen' import ProfileScreen from './src/screens/ProfileScreen' import CheckInDetailScreen from './src/screens/CheckInDetailScreen' import CreateCheckInScreen from './src/screens/CreateCheckInScreen' const TABS = [ { key: 'home', label: '打卑', icon: 'πŸ“‹' }, { key: 'feed', label: '广场', icon: '🌊' }, { key: 'profile', label: 'ζˆ‘ηš„', icon: 'πŸ‘€' }, ] function TabBar({ active, onChange }: { active: string; onChange: (k: string) => void }) { return ( {TABS.map(t => ( onChange(t.key)} style={tabBarStyles.tab}> {t.icon} {t.label} ))} ) } const tabBarStyles = StyleSheet.create({ container: { flexDirection: 'row', borderTopWidth: 0.5, borderTopColor: '#E5E5EA', backgroundColor: 'rgba(245,245,247,0.95)', paddingBottom: 20, paddingTop: 6 }, tab: { flex: 1, alignItems: 'center', gap: 2 }, icon: { fontSize: 22 }, label: { fontSize: 10, color: '#86868B' }, active: { color: '#FF6B35', fontWeight: '600' }, }) function MainApp() { const { user, loading } = useAuth() const [tab, setTab] = useState('home') const [screen, setScreen] = useState<'loading' |const [screen, setScreen] = useState<'loading' | 'login' | 'main'>('loading') const [selectedItemId, setSelectedItemId] = useState(null) const [showCreate, setShowCreate] = useState(false)| 'main'>('loading') useEffect(() => { if (!loading) { getStoredToken().then(t => setScreen(t ? 'main' : 'login')) } }, [loading]) const onLogin = useCallback(() => setScreen('main'), []) if (screen === 'loading') return 加载中... if (screen === 'login') return if (selectedItemId) return setSelectedItemId(null)} /> if (showCreate) return setShowCreate(false)} onCreated={() => { setShowCreate(false); setTab('home') }} /> const renderScreen = () => { switch (tab) { case 'home': return setShowCreate(true)} /> case 'feed': return case 'profile': return default: return null } } return ( {renderScreen()} ) } export default function App() { return ( ) }