-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApp.tsx
77 lines (68 loc) · 2.37 KB
/
App.tsx
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
import React from 'react'
import { SafeAreaView } from 'react-native'
import { Provider } from 'react-redux'
import { PersistGate } from 'redux-persist/integration/react'
import { NavigationContainer } from '@react-navigation/native'
import { createStackNavigator } from '@react-navigation/stack'
import { useFonts } from '@use-expo/font'
import { AppLoading } from 'expo'
import { HomeScreen } from '@features/home'
import { NewsDetailsScreen } from '@features/news-details'
import { NewsScreen } from '@features/news'
import { Button } from '@ui/atoms'
import { ThemeProvider, lightTheme } from '@ui/theme'
import Storybook from './storybook'
import { configureStore } from './src/store'
const Stack = createStackNavigator()
const { store, persistor } = configureStore()
const customFonts = {
ArialRegular: require('./assets/fonts/ArialRegular.ttf'),
ArialBold: require('./assets/fonts/ArialBold.ttf'),
OpenSansRegular: require('./assets/fonts/OpenSansRegular.ttf'),
OpenSansBold: require('./assets/fonts/OpenSansBold.ttf'),
}
const App: React.FC = () => {
const [showApp, setShowApp] = React.useState(false)
const [isLoaded] = useFonts(customFonts)
if (!isLoaded) {
return <AppLoading />
}
if (showApp) {
return (
<Provider store={store}>
<PersistGate loading={null} persistor={persistor}>
<ThemeProvider theme={lightTheme}>
<NavigationContainer>
<Stack.Navigator initialRouteName="Home">
<Stack.Screen
name="Home"
component={HomeScreen}
options={{ title: 'Главная' }}
/>
<Stack.Screen
name="News"
component={NewsScreen}
options={{ title: 'Новости' }}
/>
<Stack.Screen
name="NewsDetails"
component={NewsDetailsScreen}
options={{ title: 'Новость' }}
/>
</Stack.Navigator>
</NavigationContainer>
</ThemeProvider>
</PersistGate>
</Provider>
)
}
return (
<SafeAreaView style={{ flex: 1 }}>
<ThemeProvider theme={lightTheme}>
<Storybook />
<Button title="show app" onPress={() => setShowApp(true)}></Button>
</ThemeProvider>
</SafeAreaView>
)
}
export default App