// This file configures the initialization of Sentry on the client.
// The added config here will be used whenever a users loads a page in their browser.
// https://docs.sentry.io/platforms/javascript/guides/nextjs/

import * as Sentry from "@sentry/nextjs";

const sentryDsn =
  process.env.NODE_ENV === "development" || process.env.NEXT_PUBLIC_DISABLE_SENTRY === "1"
    ? undefined
    : process.env.NEXT_PUBLIC_SENTRY_DSN;
const initialFeedbackTheme = document.documentElement.classList.contains("dark") ? "dark" : "light";

if (sentryDsn) {
  Sentry.init({
    dsn: sentryDsn,
    environment: process.env.NEXT_PUBLIC_VERCEL_ENV,

    // Add optional integrations for additional features
    integrations: [
      Sentry.replayIntegration({
        maskAllText: true,
        blockAllMedia: true,
      }),
      Sentry.feedbackIntegration({
        autoInject: false,
        showBranding: false,
        enableScreenshot: true,
        colorScheme: initialFeedbackTheme,
        showName: false,
        showEmail: false,
        useSentryUser: {
          name: "name",
          email: "email",
        },
        formTitle: "Share feedback",
        submitButtonLabel: "Send feedback",
        messagePlaceholder: "Describe what you expected and what happened instead.",
        successMessageText: "Thanks for your feedback!",
      }),
    ],

    // Define how likely traces are sampled. Adjust this value in production, or use tracesSampler for greater control.
    tracesSampleRate: process.env.NODE_ENV === "production" ? 0.1 : 1,
    // Enable logs to be sent to Sentry
    enableLogs: true,

    // Define how likely Replay events are sampled.
    // This sets the sample rate to be 10%. You may want this to be 100% while
    // in development and sample at a lower rate in production
    replaysSessionSampleRate: 0.1,

    // Define how likely Replay events are sampled when an error occurs.
    replaysOnErrorSampleRate: 1.0,

    // Enable sending user PII (Personally Identifiable Information)
    // https://docs.sentry.io/platforms/javascript/guides/nextjs/configuration/options/#sendDefaultPii
    sendDefaultPii: false,
  });
}

export const onRouterTransitionStart = sentryDsn ? Sentry.captureRouterTransitionStart : undefined;
