Sentry logging and minor UI

This commit is contained in:
Patrick Fic
2025-11-04 13:51:17 -08:00
parent dcdc1e9988
commit 4b567ae04f
7 changed files with 51 additions and 44 deletions

View File

@@ -4,11 +4,13 @@ import { selectBodyshop, selectCurrentUser } from "@/redux/user/user.selectors";
import { ApolloProvider } from "@apollo/client";
import { loadDevMessages, loadErrorMessages } from "@apollo/client/dev";
import MaterialIcons from "@expo/vector-icons/MaterialIcons";
import {
DarkTheme,
DefaultTheme,
ThemeProvider,
} from "@react-navigation/native";
import * as Sentry from "@sentry/react-native";
import * as Notifications from "expo-notifications";
import { Stack } from "expo-router";
import {
@@ -19,8 +21,11 @@ import {
} from "expo-router/unstable-native-tabs";
import React, { useEffect } from "react";
import { useTranslation } from "react-i18next";
import { ActivityIndicator, Platform, View } from "react-native";
import { Provider as PaperProvider } from "react-native-paper";
import { Platform, View } from "react-native";
import {
ActivityIndicator,
Provider as PaperProvider,
} from "react-native-paper";
import { connect, Provider } from "react-redux";
import { PersistGate } from "redux-persist/integration/react";
import { createStructuredSelector } from "reselect";
@@ -33,9 +38,27 @@ import { registerForPushNotificationsAsync } from "../util/notificationHandler";
loadDevMessages();
loadErrorMessages();
Sentry.init({
dsn: "https://8d6c3de1940a4e4f8b81cf4d2150bdea@o492140.ingest.us.sentry.io/5558869",
// Adds more context data to events (IP address, cookies, user, etc.)
// For more information, visit: https://docs.sentry.io/platforms/react-native/data-management/data-collected/
sendDefaultPii: true,
// Enable Logs
enableLogs: true,
// Configure Session Replay
replaysSessionSampleRate: 0.1,
replaysOnErrorSampleRate: 1,
integrations: [
Sentry.mobileReplayIntegration(),
Sentry.feedbackIntegration(),
],
ignoreErrors: [/.*Network Error.*/i],
});
function AuthenticatedLayout() {
const { t } = useTranslation();
const paperTheme = usePaperTheme();
return (
<ThemeProvider
value={paperTheme.theme === "dark" ? DarkTheme : DefaultTheme}
@@ -146,6 +169,9 @@ function AppContent({ currentUser, checkUserSession, bodyshop }: any) {
console.log("Notification response received:", response);
});
//Clear the badges.
Notifications.setBadgeCountAsync(0);
return () => {
notificationListener.remove();
responseListener.remove();
@@ -183,7 +209,7 @@ const ConnectedAppContent = connect(
mapDispatchToProps
)(AppContent);
export default function AppLayout() {
function AppLayout() {
return (
<Provider store={store}>
<PersistGate persistor={persistor}>
@@ -194,3 +220,5 @@ export default function AppLayout() {
</Provider>
);
}
export default Sentry.wrap(AppLayout);