From 4c0a0d917be6dabc55332cf86f2896737ea6e126 Mon Sep 17 00:00:00 2001 From: Venipa Date: Tue, 21 Jan 2025 08:27:21 +0100 Subject: [PATCH] feat: sentry catch init error --- src/main/utils/sentry.ts | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/utils/sentry.ts b/src/main/utils/sentry.ts index 7ab2687..6feab1f 100644 --- a/src/main/utils/sentry.ts +++ b/src/main/utils/sentry.ts @@ -1,23 +1,30 @@ import * as Sentry from "@sentry/electron/main"; import logger from "@shared/utils/Logger"; let enabledReporting = true; +const sentryLog = logger.child("Sentry"); export const setSentryEnabled = (enable: boolean) => { if (enabledReporting !== enable) enabledReporting = enable; - if (!enable) logger.child("Sentry").warn("Sentry has been disabled"); - else logger.child("Sentry").warn("Sentry has been enabled"); + if (!enable) sentryLog.warn("Sentry has been disabled"); + else sentryLog.warn("Sentry has been enabled"); }; -if (import.meta.env.VITE_SENTRY_DSN) { - Sentry && - !Sentry.isInitialized && +if (import.meta.env.VITE_SENTRY_DSN && Sentry && !Sentry.isInitialized) { + try { Sentry.init({ dsn: import.meta.env.VITE_SENTRY_DSN, enabled: true, + onFatalError(error) { + if (enabledReporting) sentryLog.error(error); + }, beforeSend: (ev) => { if (!enabledReporting) return null; return ev; }, }); - logger.child("Sentry").info("Sentry has been initialized"); -} else logger.child("Sentry").warn("Sentry is not enabled"); + } catch { + sentryLog.warn("Sentry has failed to initialize, server may not be reachable."); + } finally { + sentryLog.info("Sentry has been initialized"); + } +} else if (!Sentry || !Sentry.isInitialized) sentryLog.warn("Sentry is not enabled"); export { Sentry };