"use client"; import "./globals.css"; import posthog from "posthog-js"; import { useEffect, useMemo } from "react"; import { Button } from "@/components/ui/button"; const ISSUES_URL = "https://github.com/MODSetter/SurfSense/issues/new"; function buildBasicIssueUrl(error: Error & { digest?: string }) { const params = new URLSearchParams(); const lines = [ "## Bug Report", "", "**Describe what happened:**", "", "", "## Diagnostics (auto-filled)", "", `- **Error:** ${error.message}`, ...(error.digest ? [`- **Digest:** \`${error.digest}\``] : []), `- **Timestamp:** ${new Date().toISOString()}`, `- **Page:** \`${typeof window !== "undefined" ? window.location.pathname : "unknown"}\``, `- **User Agent:** \`${typeof navigator !== "undefined" ? navigator.userAgent : "unknown"}\``, ]; params.set("body", lines.join("\n")); params.set("labels", "bug"); return `${ISSUES_URL}?${params.toString()}`; } export default function GlobalError({ error, reset, }: { error: Error & { digest?: string }; reset: () => void; }) { useEffect(() => { posthog.captureException(error); }, [error]); const issueUrl = useMemo(() => buildBasicIssueUrl(error), [error]); return (
An unexpected error occurred. Please try again, or report this issue if it persists.
{error.digest && (Digest: {error.digest}
)}