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 (
)
}