|
@@ -2,6 +2,7 @@ import 'react-native-gesture-handler';
|
|
|
import { QueryClientProvider } from '@tanstack/react-query';
|
|
|
import { NavigationContainer } from '@react-navigation/native';
|
|
|
import { queryClient } from 'src/utils/queryClient';
|
|
|
+import * as Sentry from '@sentry/react-native';
|
|
|
|
|
|
import Route from './Route';
|
|
|
import { ConnectionProvider } from 'src/contexts/ConnectionContext';
|
|
@@ -12,6 +13,17 @@ import { useEffect } from 'react';
|
|
|
import { setupInterceptors } from 'src/utils/request';
|
|
|
import { ErrorModal } from 'src/components';
|
|
|
import { NotificationProvider } from 'src/contexts/NotificationContext';
|
|
|
+import React from 'react';
|
|
|
+
|
|
|
+const routingInstrumentation = new Sentry.ReactNavigationInstrumentation({
|
|
|
+ enableTimeToInitialDisplay: true
|
|
|
+});
|
|
|
+
|
|
|
+Sentry.init({
|
|
|
+ dsn: 'https://c9b37005f4be22a17a582603ebc17598@o4507781200543744.ingest.de.sentry.io/4507781253824592',
|
|
|
+ integrations: [new Sentry.ReactNativeTracing({ routingInstrumentation })],
|
|
|
+ debug: false
|
|
|
+});
|
|
|
|
|
|
const App = () => {
|
|
|
return (
|
|
@@ -27,6 +39,7 @@ const App = () => {
|
|
|
|
|
|
const InnerApp = () => {
|
|
|
const errorContext = useError();
|
|
|
+ const navigation = React.useRef(null);
|
|
|
|
|
|
useEffect(() => {
|
|
|
setupInterceptors(errorContext);
|
|
@@ -35,7 +48,12 @@ const InnerApp = () => {
|
|
|
return (
|
|
|
<ConnectionProvider>
|
|
|
<RegionProvider>
|
|
|
- <NavigationContainer>
|
|
|
+ <NavigationContainer
|
|
|
+ ref={navigation}
|
|
|
+ onReady={() => {
|
|
|
+ routingInstrumentation.registerNavigationContainer(navigation);
|
|
|
+ }}
|
|
|
+ >
|
|
|
<ConnectionBanner />
|
|
|
<Route />
|
|
|
<ErrorModal />
|
|
@@ -45,4 +63,4 @@ const InnerApp = () => {
|
|
|
);
|
|
|
};
|
|
|
|
|
|
-export default App;
|
|
|
+export default Sentry.wrap(App);
|