import { app } from 'electron';
import * as Sentry from '@sentry/electron/main';
import { appConfig, appEnv } from '@/config/env';
import { installErrorSinks } from '@/lib/errors';

/**
 * Initialise Sentry for the main process. Captures uncaught exceptions from
 * the Node side and the crash reporter. Safe to call before `app.whenReady`.
 */
export function initSentryMain(): void {
  if (!appConfig.sentryDsn) return;

  Sentry.init({
    dsn: appConfig.sentryDsn,
    environment: appEnv,
    tracesSampleRate: 0,
    release: app.getVersion(),
  });

  installErrorSinks({
    capture: (err, context) => Sentry.captureException(err, { extra: context }),
    breadcrumb: (err, context) =>
      Sentry.addBreadcrumb({
        category: 'error',
        level: 'error',
        message: err instanceof Error ? err.message : String(err),
        data: context,
      }),
  });
}
