import 'react-native-gesture-handler'; import { Navigation } from "react-native-navigation"; import { gestureHandlerRootHOC } from 'react-native-gesture-handler'; import { App } from './src/App'; import { Settings } from './src/Settings'; import { Splash } from './src/Splash'; import { Media } from './src/Media'; import { Camera } from 'react-native-vision-camera'; Navigation.setDefaultOptions({ topBar: { visible: false, }, window: { backgroundColor: 'black', }, layout: { backgroundColor: 'black', componentBackgroundColor: 'black' }, statusBar: { animated: true, drawBehind: true, translucent: true, visible: true, style: 'dark' }, animations: { setRoot: { alpha: { duration: 500, from: 0, to: 1, } }, } }); Navigation.registerComponent('Splash', () => gestureHandlerRootHOC(Splash), () => Splash); Navigation.registerComponent('Home', () => gestureHandlerRootHOC(App), () => App); Navigation.registerComponent('Media', () => gestureHandlerRootHOC(Media), () => Media); Navigation.registerComponent('Settings', () => gestureHandlerRootHOC(Settings), () => Settings); Navigation.events().registerNavigationButtonPressedListener((event) => { if (event.buttonId === "back") { Navigation.pop(event.componentId); } }); Navigation.events().registerAppLaunchedListener(async () => { const [cameraPermission, microphonePermission] = await Promise.all([ Camera.getCameraPermissionStatus(), Camera.getMicrophonePermissionStatus(), ]); let rootName = "Splash"; if (cameraPermission === "authorized" && microphonePermission === "authorized") { rootName = "Home"; } Navigation.setRoot({ root: { stack: { children: [ { component: { name: rootName } } ] } } }); });