diff --git a/App.js b/App.js index 2d1e278..5f8fc40 100644 --- a/App.js +++ b/App.js @@ -12,40 +12,11 @@ import { client } from "./graphql/client"; import { persistor, store } from "./redux/store"; import "./translations/i18n"; -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] - // uncomment the line below to enable Spotlight (https://spotlightjs.com) - // spotlight: __DEV__, -}); - -// Sentry.init({ -// dsn: "https://8d6c3de1940a4e4f8b81cf4d2150bdea@o492140.ingest.sentry.io/5558869", -// enableInExpoDevelopment: true, -// // tracesSampleRate: 0.2, -// // integrations: [ -// // new Sentry.ReactNativeTracing({ -// // tracingOrigins: ["localhost", "imex.online", "cloudinary.com", /^\//], -// // // ... other options -// // }), -// // ], -// //debug: true, // Sentry will try to print out useful debugging information if something goes wrong with sending an event. Set this to `false` in production. -// }); const App = () => { + return ( diff --git a/app/_layout.tsx b/app/_layout.tsx index d7fa04a..ff40419 100644 --- a/app/_layout.tsx +++ b/app/_layout.tsx @@ -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 ( { notificationListener.remove(); responseListener.remove(); @@ -183,7 +209,7 @@ const ConnectedAppContent = connect( mapDispatchToProps )(AppContent); -export default function AppLayout() { +function AppLayout() { return ( @@ -194,3 +220,5 @@ export default function AppLayout() { ); } + +export default Sentry.wrap(AppLayout); diff --git a/components/global-search/global-search.jsx b/components/global-search/global-search.jsx index 0647b28..20df19f 100644 --- a/components/global-search/global-search.jsx +++ b/components/global-search/global-search.jsx @@ -106,7 +106,7 @@ export default function GlobalSearch() { {!loading && ( { - results.length - 1 //Need to subtract for the spacer. + Math.max(0, results.length - 1) //Need to subtract for the spacer. }{" "} results found diff --git a/components/jobs-list/job-list-item.jsx b/components/jobs-list/job-list-item.jsx index cc8e6ef..ed4349f 100644 --- a/components/jobs-list/job-list-item.jsx +++ b/components/jobs-list/job-list-item.jsx @@ -43,7 +43,16 @@ function JobListItemComponent({ openImagePicker, item }) { const roNumber = item.ro_number || t("general.labels.na"); if (item.id === "footer-spacer") { - return ; + return ( + //This has to be nested for some reason? + + + + ); } return ( + {t("joblist.titles.jobtab")} - diff --git a/components/settings/settings.jsx b/components/settings/settings.jsx index b52ed66..4df792b 100644 --- a/components/settings/settings.jsx +++ b/components/settings/settings.jsx @@ -66,7 +66,7 @@ function Tab({ bodyshop, currentUser, signOutStart }) { }; return ( - + {t("settings.titles.settings")} @@ -230,6 +230,7 @@ const styles = StyleSheet.create({ container: { paddingVertical: 24, paddingHorizontal: 12, + paddingBottom: 96, }, title: { marginHorizontal: 12, diff --git a/redux/user/user.sagas.js b/redux/user/user.sagas.js index 32f34c4..a1420d1 100644 --- a/redux/user/user.sagas.js +++ b/redux/user/user.sagas.js @@ -106,9 +106,6 @@ export function* onSignInSuccess() { export function* signInSuccessSaga({ payload }) { try { - // Analytics.setUserId(payload.email);//JF:commenting out the firebase analytics portion - - const shop = yield client.query({ query: QUERY_BODYSHOP }); logImEXEvent("imexmobile_sign_in_success", payload);