Files
circle-collect/App.tsx

79 lines
1.8 KiB
TypeScript

import React, { useEffect } from 'react';
import { LogBox, StyleSheet } from 'react-native';
import { SafeAreaProvider } from 'react-native-safe-area-context';
import { PaperProvider } from 'react-native-paper';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import AppNavigator from './src/navigation/AppNavigator';
import notifee from '@notifee/react-native';
import {
backgroundHandler,
foregroundListener,
requestPermission,
setupFirebaseHandlers,
setupNotificationPressHandlers,
tokenRefreshHandler,
} from './src/utils/firebase/firebaseServices';
import { ThemeProvider } from './src/theme/ThemeProvider';
LogBox.ignoreAllLogs(true);
export const queryClient = new QueryClient({
defaultOptions: {
queries: {
retry: 2,
staleTime: 1000 * 60 * 5, // 5 minutes
},
},
});
import { GestureHandlerRootView } from 'react-native-gesture-handler';
function App() {
useEffect(() => {
requestPermission();
backgroundHandler();
setupFirebaseHandlers();
setupNotificationPressHandlers();
const unsubscribe = foregroundListener();
const unsubscribeRefresh = tokenRefreshHandler();
notifee.createChannel({
id: 'default',
name: 'Default Channel',
importance: 4,
});
return () => {
unsubscribe();
unsubscribeRefresh();
};
}, []);
return (
<GestureHandlerRootView style={{ flex: 1 }}>
<SafeAreaProvider>
<QueryClientProvider client={queryClient}>
<ThemeProvider>
<PaperProvider >
<AppNavigator />
</PaperProvider>
</ThemeProvider>
</QueryClientProvider>
</SafeAreaProvider>
</GestureHandlerRootView>
);
}
export default App;
const styles = StyleSheet.create({
container: {
flex: 1,
},
});