Files
jrshikoku/components/AppRootLayout.tsx

53 lines
2.1 KiB
TypeScript

import React from "react";
import { GestureHandlerRootView } from "react-native-gesture-handler";
import { SafeAreaProvider } from "react-native-safe-area-context";
import { SheetProvider } from "react-native-actions-sheet";
import { AppContainer } from "../Apps";
import { AllTrainDiagramProvider } from "../stateBox/useAllTrainDiagram";
import { NotificationProvider } from "../stateBox/useNotifications";
import { UserPositionProvider } from "../stateBox/useUserPosition";
import { StationListProvider } from "../stateBox/useStationList";
import { FavoriteStationProvider } from "../stateBox/useFavoriteStation";
import { TrainDelayDataProvider } from "../stateBox/useTrainDelayData";
import { TrainMenuProvider } from "../stateBox/useTrainMenu";
import { CurrentTrainProvider } from "../stateBox/useCurrentTrain";
import { AreaInfoProvider } from "../stateBox/useAreaInfo";
import { BusAndTrainDataProvider } from "../stateBox/useBusAndTrainData";
import { DeviceOrientationChangeProvider } from "../stateBox/useDeviceOrientationChange";
import { buildProvidersTree } from "../lib/providerTreeProvider";
import { AppThemeProvider } from "../lib/theme";
import StatusbarDetect from "../StatusbarDetect";
import "./ActionSheetComponents/sheets";
const ProviderTree = buildProvidersTree([
AllTrainDiagramProvider,
NotificationProvider,
UserPositionProvider,
StationListProvider,
FavoriteStationProvider,
TrainDelayDataProvider,
TrainMenuProvider, // CurrentTrainProvider より先に置くことで useTrainMenu が使える
CurrentTrainProvider,
AreaInfoProvider,
BusAndTrainDataProvider,
SheetProvider,
]);
export function AppRootLayout(): React.ReactElement {
return (
<AppThemeProvider>
<DeviceOrientationChangeProvider>
<SafeAreaProvider>
<StatusbarDetect />
<GestureHandlerRootView style={{ flex: 1 }}>
<ProviderTree>
<AppContainer />
</ProviderTree>
</GestureHandlerRootView>
{/* <StartupOverlay /> */}
</SafeAreaProvider>
</DeviceOrientationChangeProvider>
</AppThemeProvider>
);
}