-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathApp.tsx
More file actions
99 lines (86 loc) · 2.83 KB
/
App.tsx
File metadata and controls
99 lines (86 loc) · 2.83 KB
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import {NavigationContainer} from '@react-navigation/native';
import {createNativeStackNavigator} from '@react-navigation/native-stack';
import React, {useEffect, useRef, useState} from 'react';
import {useTranslation} from 'react-i18next';
import {
StatusBar,
StyleSheet,
useColorScheme,
} from 'react-native';
import {Provider} from 'react-redux';
import {Colors} from 'react-native/Libraries/NewAppScreen';
import {SCREEN_PARAMS_ALL} from './src/core/models/ScreenTypes';
import {SCREEN_NAME} from './src/core/constants/SCREEN_NAME';
import {navigationRef} from './src/core/utils';
import i18n from './src/i18n';
import HomeStack from './src/modules/home';
import LoadingScreen from './src/modules/LoadingScreen';
import OnboardingStack from './src/modules/onboarding';
import {AirMoneyThemeDark} from './styles/main.styles';
import {SheetProvider} from 'react-native-actions-sheet';
import { RootState, store } from './src/store';
import {useSelector, useDispatch} from 'react-redux';
import SplashScreen from 'react-native-splash-screen';
//@ts-ignore
import GlobalFont from 'react-native-global-font';
i18n.init();
const App = () => {
const {t} = useTranslation();
const scheme = useColorScheme();
const isDarkMode = useColorScheme() === 'dark';
const backgroundStyle = {
backgroundColor: isDarkMode ? Colors.darker : Colors.lighter,
};
useEffect(() => {
setTimeout(() => {
SplashScreen?.hide();
}, 2500);
GlobalFont.applyGlobal('MazzardM-Regular')
}, [])
return (
<NavigationContainer
// fallback={<FullScreenLoader />}
ref={navigationRef}
theme={scheme === 'dark' ? AirMoneyThemeDark : AirMoneyThemeDark}>
<Provider store={store}>
<SheetProvider>
<NavigateApp />
</SheetProvider>
</Provider>
</NavigationContainer>
);
};
const Stack = createNativeStackNavigator<SCREEN_PARAMS_ALL>();
export const NavigateApp = () => {
const {loggedIn} = useSelector((state: RootState) => state.auth);
const [isLoaded, setIsLoaded] = useState(true);
useEffect(() => {
StatusBar.setBarStyle('dark-content');
}, []);
return (
<Stack.Navigator screenOptions={{headerShown: false}}>
{!isLoaded && (<Stack.Screen name={SCREEN_NAME.LoadingStack} component={LoadingScreen}/>)}
{isLoaded && !loggedIn && (<Stack.Screen name={SCREEN_NAME.OnboardingStack} component={OnboardingStack}/>)}
{isLoaded && loggedIn && (<Stack.Screen name={SCREEN_NAME.HomeStack} component={HomeStack}/>)}
</Stack.Navigator>
);
};
const styles = StyleSheet.create({
sectionContainer: {
marginTop: 32,
paddingHorizontal: 24,
},
sectionTitle: {
fontSize: 24,
fontWeight: '600',
},
sectionDescription: {
marginTop: 8,
fontSize: 18,
fontWeight: '400',
},
highlight: {
fontWeight: '700',
},
});
export default App;