DRP_Sajidaat/DRP-App/app/_layout.tsx

56 lines
1.5 KiB
TypeScript

import { AuthProvider } from '@/context/AuthContext';
import { Slot, SplashScreen, useRouter } from 'expo-router';
import * as Notifications from 'expo-notifications';
import { useEffect, useState } from 'react';
import { Platform } from 'react-native';
import React from 'react';
// Prevent the splash screen from auto-hiding
SplashScreen.preventAutoHideAsync();
export default function RootLayout() {
const router = useRouter();
const [appReady, setAppReady] = useState(false);
const [splashComplete, setSplashComplete] = useState(false);
useEffect(() => {
// Initialize your app
const prepare = async () => {
try {
// Request notification permissions
const { status } = await Notifications.requestPermissionsAsync();
if (status !== 'granted') {
console.warn('Permission for notifications not granted!');
}
// Set up notification handler
Notifications.setNotificationHandler({
handleNotification: async () => ({
shouldShowAlert: true,
shouldPlaySound: true,
shouldSetBadge: false,
shouldShowBanner: true,
shouldShowList: true,
}),
});
// Artificially delay for demonstration
await new Promise(resolve => setTimeout(resolve, 2000));
} catch (e) {
console.warn(e);
} finally {
setAppReady(true);
await SplashScreen.hideAsync();
}
};
prepare();
}, []);
return (
<AuthProvider>
<Slot />
</AuthProvider>
);
}