|
1 | | -import React, {useEffect, useState} from 'react'; |
2 | | -import {createBottomTabNavigator} from '@react-navigation/bottom-tabs'; |
| 1 | +import React, {useState, useEffect} from 'react'; |
3 | 2 | import {createStackNavigator} from '@react-navigation/stack'; |
4 | | -import AsyncStorage from '@react-native-async-storage/async-storage'; |
5 | 3 | import {useAuth} from '../contexts/AuthContext'; |
6 | | - |
7 | | -import HomeScreen from '../screens/HomeScreen'; |
8 | | -import GachaScreen from '../screens/GachaScreen'; |
9 | | -import InvestScreen from '../screens/InvestScreen'; |
10 | | -import AnalysisScreen from '../screens/AnalysisScreen'; |
11 | | -import BagScreen from '../screens/BagScreen'; |
12 | | -import SettingsScreen from '../screens/SettingsScreen'; |
13 | | -import TransactionScreen from '../screens/TransactionScreen'; |
| 4 | +import {useUserProfile} from '../api/userService'; |
14 | 5 | import SetUp from '../screens/SetUp'; |
| 6 | +import TabNavigator from './TabNavigator'; |
| 7 | +import SettingsScreen from '../screens/SettingsScreen'; |
15 | 8 |
|
16 | | -const Tab = createBottomTabNavigator(); |
17 | 9 | const Stack = createStackNavigator(); |
18 | 10 |
|
19 | | -const TabNavigator = () => { |
20 | | - return ( |
21 | | - <Tab.Navigator |
22 | | - screenOptions={{ |
23 | | - headerShown: false, |
24 | | - tabBarStyle: {display: 'none'}, |
25 | | - }}> |
26 | | - <Tab.Screen name="Home" component={HomeScreen} /> |
27 | | - <Tab.Screen name="Gacha" component={GachaScreen} /> |
28 | | - <Tab.Screen name="Invest" component={InvestScreen} /> |
29 | | - <Tab.Screen name="Analysis" component={AnalysisScreen} /> |
30 | | - <Tab.Screen name="Bag" component={BagScreen} /> |
31 | | - <Tab.Screen name="TransactionScreen" component={TransactionScreen} /> |
32 | | - </Tab.Navigator> |
33 | | - ); |
34 | | -}; |
35 | | - |
36 | 11 | const AppNavigator = () => { |
37 | 12 | const {user} = useAuth(); |
| 13 | + const {user: userProfile, isLoading: isUserLoading} = useUserProfile(); |
38 | 14 | const [initialRoute, setInitialRoute] = useState<string | null>(null); |
39 | 15 |
|
40 | 16 | useEffect(() => { |
41 | 17 | const checkSetup = async () => { |
42 | | - if (!user?.uid) {return;} |
43 | | - const key = `setupDone-${user.uid}`; |
44 | | - const setupDone = await AsyncStorage.getItem(key); |
45 | | - setInitialRoute(setupDone === 'true' ? 'MainTabs' : 'SetUp'); |
| 18 | + if (!user?.uid || isUserLoading) {return;} |
| 19 | + |
| 20 | + if (!userProfile?.character?.id) { |
| 21 | + setInitialRoute('SetUp'); |
| 22 | + } else { |
| 23 | + setInitialRoute('MainTabs'); |
| 24 | + } |
46 | 25 | }; |
47 | 26 | checkSetup(); |
48 | | - }, [user]); |
| 27 | + }, [user, userProfile, isUserLoading]); |
49 | 28 |
|
50 | | - if (!initialRoute) {return null;} |
| 29 | + if (!initialRoute || isUserLoading) {return null;} |
51 | 30 |
|
52 | 31 | return ( |
53 | 32 | <Stack.Navigator |
|
0 commit comments