"use client"; import * as Sentry from "@sentry/nextjs"; import { useEffect, useMemo } from 'react' import { useState } from "react" import { Copy, CheckCircle2, TriangleAlert } from "lucide-react" import Link from 'next/link'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { serviceErrorSchema } from '@/lib/serviceError'; import { SourcebotLogo } from './components/sourcebotLogo'; import { SOURCEBOT_SUPPORT_EMAIL } from "@/lib/constants"; export default function Error({ error, reset }: { error: Error & { digest?: string }, reset: () => void }) { useEffect(() => { Sentry.captureException(error); console.error(error); }, [error]); const { message, errorCode, statusCode } = useMemo(() => { try { const body = JSON.parse(error.message); const { success, data: serviceError } = serviceErrorSchema.safeParse(body); if (success) { return { message: serviceError.message, errorCode: serviceError.errorCode, statusCode: serviceError.statusCode, } } /* eslint-disable no-empty */ } catch {} return { message: error.message, } }, [error]); return (