提交修改
CI / Server (Go) (push) Has been cancelled
CI / Web (Next.js) (push) Has been cancelled
CI / Mobile (React Native) (push) Has been cancelled
CI / Admin (React) (push) Has been cancelled
CI / Docker Build (push) Has been cancelled

This commit is contained in:
zeronline
2026-06-29 16:49:54 +08:00
parent 545329ac40
commit b01a5f91c3
43 changed files with 740 additions and 338 deletions
+15 -6
View File
@@ -4,6 +4,7 @@ import { NavigationContainer } from '@react-navigation/native'
import { createNativeStackNavigator } from '@react-navigation/native-stack'
import { SafeAreaProvider } from 'react-native-safe-area-context'
import { AuthProvider, useAuth } from './src/components/AuthProvider'
import ThemeProvider, { useTheme } from './src/components/ThemeProvider'
import { getStoredToken } from './src/services/api'
import LoginScreen from './src/screens/LoginScreen'
import MainTabs from './src/navigation/MainTabs'
@@ -11,9 +12,15 @@ import type { RootStackParamList } from './src/navigation/types'
const RootStack = createNativeStackNavigator<RootStackParamList>()
function AppStatusBar() {
const { isDark } = useTheme()
return <StatusBar barStyle={isDark ? 'light-content' : 'dark-content'} background={isDark ? '#1C1C1E' : '#F5F5F7'} />
}
function AuthGate() {
const { user, loading } = useAuth()
const [initialRoute, setInitialRoute] = useState<'Login' | 'MainTabs' | null>(null)
const { colors } = useTheme()
useEffect(() => {
if (!loading) {
@@ -25,8 +32,8 @@ function AuthGate() {
if (!initialRoute) {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#F5F5F7' }}>
<Text style={{ color: '#86868B' }}>...</Text>
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: colors.bg }}>
<Text style={{ color: colors.textSecondary }}>...</Text>
</View>
)
}
@@ -43,10 +50,12 @@ export default function App() {
return (
<SafeAreaProvider>
<AuthProvider>
<NavigationContainer>
<StatusBar barStyle="dark-content" background="#F5F5F7" />
<AuthGate />
</NavigationContainer>
<ThemeProvider>
<NavigationContainer>
<AppStatusBar />
<AuthGate />
</NavigationContainer>
</ThemeProvider>
</AuthProvider>
</SafeAreaProvider>
)