import { isError } from 'lodash' import { ExternalLink } from 'lucide-react' import Link from 'next/link' import { useRouter } from 'next/router' import CopyButton from './CopyButton' import Image from 'next/image' import { AlertDescription_Shadcn_, AlertTitle_Shadcn_, Alert_Shadcn_, Button, WarningIcon, cn, } from 'ui' import { InlineLinkClassName } from './InlineLink' // More correct version of FallbackProps from react-error-boundary export type FallbackProps = { error: unknown resetErrorBoundary: (...args: any[]) => void } export const GlobalErrorBoundaryState = ({ error, resetErrorBoundary }: FallbackProps) => { const router = useRouter() const checkIsError = isError(error) const errorMessage = checkIsError ? error.message : '' const urlMessage = checkIsError ? `Path name: ${router.pathname}\n\n${error?.stack}` : '' const isRemoveChildError = checkIsError ? errorMessage.includes("Failed to execute 'removeChild' on 'Node'") : false const handleClearStorage = () => { try { localStorage.clear() sessionStorage.clear() } catch (e) { // ignore } window.location.reload() } return (
Sorry! An unexpected error occurred.
Application error: a client-side exception has occurred (see browser console for more information)
{errorMessage}
'removeChild' on 'Node' error.