-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathApp.js
52 lines (48 loc) · 1.71 KB
/
App.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import React, {useEffect, useState} from 'react';
import {NavigationContainer} from '@react-navigation/native';
import {GestureHandlerRootView} from 'react-native-gesture-handler';
import RootNavigator from './navigation/RootNavigator';
import {BottomSheetModalProvider} from '@gorhom/bottom-sheet';
import {
getShowOnBoardingSettingsEverytime,
getShowOnBoardingSettingsFirstTime,
initializeDefaultSettings,
} from './utils/settings';
import SplashScreen from 'react-native-splash-screen';
import {ActivityIndicator, Platform} from 'react-native';
import colors from './assets/constants/colors';
initializeDefaultSettings();
export default function App() {
const [initialRoute, setInitialRoute] = useState('');
useEffect(() => {
async function getFirstTimeSettings() {
let showOnBoardingSettingsFirstTime =
getShowOnBoardingSettingsFirstTime();
let showOnBoardingSettingsEveryTime =
getShowOnBoardingSettingsEverytime();
if (
showOnBoardingSettingsEveryTime ||
showOnBoardingSettingsFirstTime ||
showOnBoardingSettingsFirstTime === undefined // handles the case when it is uninialized
) {
setInitialRoute('Onboarding');
} else {
setInitialRoute('Tabs');
}
SplashScreen.hide();
}
getFirstTimeSettings();
}, []);
return (
<GestureHandlerRootView style={{flex: 1}}>
<NavigationContainer>
<BottomSheetModalProvider>
{!initialRoute && (
<ActivityIndicator size={'large'} color={colors.PRIM_ACCENT} />
)}
{initialRoute && <RootNavigator initialRoute={initialRoute} />}
</BottomSheetModalProvider>
</NavigationContainer>
</GestureHandlerRootView>
);
}