import { ErrorBoundary } from 'react-error-boundary'; import { useTranslation } from 'react-i18next'; import { ServerSelector } from '/@/renderer/features/sidebar/components/server-selector'; import { LogCategory, logFn } from '/@/renderer/utils/logger'; import { Box } from '/@/shared/components/box/box'; import { Button } from '/@/shared/components/button/button'; import { Center } from '/@/shared/components/center/center'; import { Code } from '/@/shared/components/code/code'; import { Group } from '/@/shared/components/group/group'; import { Icon } from '/@/shared/components/icon/icon'; import { Stack } from '/@/shared/components/stack/stack'; import { TextTitle } from '/@/shared/components/text-title/text-title'; import { Text } from '/@/shared/components/text/text'; interface PageErrorFallbackProps { error: Error; resetErrorBoundary: () => void; } const PageErrorFallback = ({ error, resetErrorBoundary }: PageErrorFallbackProps) => { const { t } = useTranslation(); const handleRefresh = () => { window.location.reload(); }; return (
{t('error.genericError', { postProcess: 'sentenceCase' })} {error?.message || t('error.genericError', { postProcess: 'sentenceCase' })} {process.env.NODE_ENV === 'development' && error?.stack && ( {error.stack} )}
); }; interface PageErrorBoundaryProps { children: React.ReactNode; } export const PageErrorBoundary = ({ children }: PageErrorBoundaryProps) => { return ( { logFn.error('Page error boundary caught an error', { category: LogCategory.OTHER, meta: { componentStack: errorInfo?.componentStack, message: error?.message, name: error?.name, stack: error?.stack, }, }); }} onReset={() => {}} > {children} ); };