nostros/frontend/index.tsx

78 lines
2.7 KiB
TypeScript
Raw Normal View History

2022-10-31 00:37:42 +00:00
import React from 'react'
import { AppContextProvider } from './Contexts/AppContext'
2023-01-13 11:51:30 +00:00
import {
InitialState,
NavigationContainer,
DefaultTheme as NavigationDefaultTheme,
DarkTheme as NavigationDarkTheme,
} from '@react-navigation/native'
import { createDrawerNavigator } from '@react-navigation/drawer'
2022-10-31 00:37:42 +00:00
import { RelayPoolContextProvider } from './Contexts/RelayPoolContext'
import { I18nextProvider } from 'react-i18next'
2023-01-13 11:51:30 +00:00
import { adaptNavigationTheme, Provider as PaperProvider } from 'react-native-paper'
import { SafeAreaProvider, SafeAreaInsetsContext } from 'react-native-safe-area-context'
2022-10-31 00:37:42 +00:00
import i18n from './i18n.config'
2023-01-13 11:51:30 +00:00
import nostrosDarkTheme from './Constants/Theme/theme-dark.json'
import RootNavigator from './Components/RootNavigator'
import MenuItems from './Components/MenuItems'
2022-10-24 17:27:31 +00:00
2023-01-13 11:51:30 +00:00
const DrawerNavigator = createDrawerNavigator()
export const Frontend: React.FC = () => {
const [initialState, setInitialState] = React.useState<InitialState | undefined>()
const { LightTheme, DarkTheme } = adaptNavigationTheme({
reactNavigationLight: NavigationDefaultTheme,
reactNavigationDark: NavigationDarkTheme,
})
const CombinedDefaultTheme = React.useMemo(() => {
return {
...DarkTheme,
...nostrosDarkTheme,
colors: {
...DarkTheme.colors,
...nostrosDarkTheme.colors,
},
}
}, [])
2022-10-24 17:27:31 +00:00
return (
2023-01-13 11:51:30 +00:00
<PaperProvider theme={nostrosDarkTheme}>
<SafeAreaProvider>
2022-10-24 17:27:31 +00:00
<I18nextProvider i18n={i18n}>
<AppContextProvider>
<RelayPoolContextProvider>
2023-01-13 11:51:30 +00:00
<React.Fragment>
<NavigationContainer theme={CombinedDefaultTheme} initialState={initialState}>
<SafeAreaInsetsContext.Consumer>
{() => {
return (
<DrawerNavigator.Navigator
drawerContent={({navigation}) => <MenuItems navigation={navigation}/>}
screenOptions={{
drawerStyle: {
borderRadius: 28
},
}}
>
<DrawerNavigator.Screen
name='Home'
component={RootNavigator}
options={{ headerShown: false }}
/>
</DrawerNavigator.Navigator>
)
}}
</SafeAreaInsetsContext.Consumer>
</NavigationContainer>
</React.Fragment>
2022-10-24 17:27:31 +00:00
</RelayPoolContextProvider>
</AppContextProvider>
</I18nextProvider>
2023-01-13 11:51:30 +00:00
</SafeAreaProvider>
</PaperProvider>
2022-10-31 00:37:42 +00:00
)
}
2022-10-24 17:27:31 +00:00
2022-10-31 00:37:42 +00:00
export default Frontend