nostros/frontend/index.tsx

62 lines
2.3 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-23 13:30:30 +00:00
import { RelayPoolContextProvider } from './Contexts/RelayPoolContext'
import { I18nextProvider } from 'react-i18next'
2023-01-13 11:51:30 +00:00
import {
NavigationContainer,
DefaultTheme as NavigationDefaultTheme,
DarkTheme as NavigationDarkTheme,
} from '@react-navigation/native'
2023-01-23 13:30:30 +00:00
import {
adaptNavigationTheme,
Provider as PaperProvider,
MD3DarkTheme,
MD3LightTheme,
} from 'react-native-paper'
import merge from 'deepmerge'
2023-01-13 11:51:30 +00:00
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'
2023-01-14 14:52:10 +00:00
import { navigationRef } from './lib/Navigation'
2023-01-14 20:35:35 +00:00
import { UserContextProvider } from './Contexts/UserContext'
2023-01-18 21:54:28 +00:00
import NostrosDrawerNavigator from './Pages/NostrosDrawerNavigator'
2023-01-15 16:40:32 +00:00
2023-01-13 11:51:30 +00:00
export const Frontend: React.FC = () => {
2023-01-23 13:30:30 +00:00
const { LightTheme, DarkTheme } = adaptNavigationTheme({
2023-01-13 11:51:30 +00:00
reactNavigationLight: NavigationDefaultTheme,
reactNavigationDark: NavigationDarkTheme,
})
2023-01-23 13:30:30 +00:00
const CombinedDefaultTheme = React.useMemo(() => merge(MD3LightTheme, LightTheme), [])
const CombinedDarkTheme = React.useMemo(() => merge(MD3DarkTheme, DarkTheme), [])
// TODO: Light theme
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const NostrosDefaultTheme = React.useMemo(() => merge(CombinedDefaultTheme, nostrosDarkTheme), [])
const NostrosDarkTheme = React.useMemo(() => merge(CombinedDarkTheme, nostrosDarkTheme), [])
2022-10-24 17:27:31 +00:00
return (
2023-01-23 13:30:30 +00:00
<PaperProvider theme={NostrosDarkTheme}>
<NavigationContainer theme={NostrosDarkTheme} ref={navigationRef}>
<SafeAreaProvider>
<I18nextProvider i18n={i18n}>
2023-01-14 14:52:10 +00:00
<AppContextProvider>
2023-01-14 20:35:35 +00:00
<UserContextProvider>
<RelayPoolContextProvider>
<React.Fragment>
<SafeAreaInsetsContext.Consumer>
2023-01-18 21:54:28 +00:00
{() => <NostrosDrawerNavigator />}
2023-01-14 20:35:35 +00:00
</SafeAreaInsetsContext.Consumer>
</React.Fragment>
</RelayPoolContextProvider>
</UserContextProvider>
2023-01-14 14:52:10 +00:00
</AppContextProvider>
2023-01-23 13:30:30 +00:00
</I18nextProvider>
</SafeAreaProvider>
</NavigationContainer>
2023-01-13 11:51:30 +00:00
</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