import { Suspense, useEffect } from "react"; import { AppProps, ErrorBoundary, AuthenticationError, AuthorizationError, ErrorFallbackProps, useQueryErrorResetBoundary, getConfig, useSession, } from "blitz"; import Sentry from "../../integrations/sentry"; import ErrorComponent from "../core/components/error-component"; import LoginForm from "../auth/components/login-form"; import { usePanelbear } from "../core/hooks/use-panelbear"; import "app/core/styles/index.css"; const { publicRuntimeConfig } = getConfig(); export default function App({ Component, pageProps }: AppProps) { const session = useSession(); usePanelbear(publicRuntimeConfig.panelBear.siteId); useEffect(() => { if (session.userId) { Sentry.setUser({ id: session.userId.toString(), orgId: session.orgId, }); } }, [session]); const getLayout = Component.getLayout || ((page) => page); return ( Sentry.captureException(error, { contexts: { react: { componentStack } } }) } FallbackComponent={RootErrorFallback} onReset={useQueryErrorResetBoundary().reset} > {getLayout()} ); } function RootErrorFallback({ error, resetErrorBoundary }: ErrorFallbackProps) { if (error instanceof AuthenticationError) { return ; } else if (error instanceof AuthorizationError) { return ; } else { return ; } }