sso-poc-marn/app/_layout.tsx
Guillaume "B.B." Van Hemmen c728b3ebe2
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Implement CI-CD (#1)
Reviewed-on: #1
Co-authored-by: Guillaume "B.B." Van Hemmen <GuillaumeHemmen@noreply.git.van-hemmen.com>
Co-committed-by: Guillaume "B.B." Van Hemmen <GuillaumeHemmen@noreply.git.van-hemmen.com>
2024-10-17 11:41:36 +02:00

71 lines
2 KiB
TypeScript

import FontAwesome from '@expo/vector-icons/FontAwesome';
import {DarkTheme, DefaultTheme, ThemeProvider} from '@react-navigation/native';
import {useFonts} from 'expo-font';
import {Stack} from 'expo-router';
import * as SplashScreen from 'expo-splash-screen';
import {useEffect} from 'react';
import {useColorScheme} from '@/components/useColorScheme';
import {View} from "react-native";
export {
// Catch any errors thrown by the Layout component.
ErrorBoundary,
} from 'expo-router';
export const unstable_settings = {
// Ensure that reloading on `/modal` keeps a back button present.
initialRouteName: 'index',
};
// Prevent the splash screen from auto-hiding before asset loading is complete.
SplashScreen.preventAutoHideAsync();
export default function RootLayout() {
const [loaded, error] = useFonts({
SpaceMono: require('../assets/fonts/SpaceMono-Regular.ttf'),
...FontAwesome.font,
});
// Expo Router uses Error Boundaries to catch errors in the navigation tree.
useEffect(() => {
if (error) throw error;
}, [error]);
useEffect(() => {
if (loaded) {
SplashScreen.hideAsync();
}
}, [loaded]);
if (!loaded) {
return null;
}
return <RootLayoutNav/>;
}
function RootLayoutNav() {
const colorScheme = useColorScheme();
return (
<View style={{
flex: 1,
justifyContent: 'center',
alignItems: 'center',
}}>
<View style={{
flex: 1,
width: '100%',
}}>
<ThemeProvider value={colorScheme === 'dark' ? DarkTheme : DefaultTheme}>
<Stack>
<Stack.Screen name="index" options={{headerShown: false}}/>
<Stack.Screen name="ssoCallback" options={{headerShown: false}}/>
<Stack.Screen name="ssoLogout" options={{headerShown: false}}/>
</Stack>
</ThemeProvider>
</View>
</View>
);
}