fix(referencelines): and bring back the notification for worker updates but disallow duplication (#5005)

This commit is contained in:
Alireza authored and GitHub committed 2025-04-29 14:53:37 -04:00
1 parent 4643d6dc40
commit 98f8187dfe
21 files changed
+285 -65

No files matched your search

@@ -1,10 +1,10 @@
import React, { useState, useEffect } from 'react';
import { ErrorBoundary as ReactErrorBoundary } from 'react-error-boundary';
import { ErrorBoundary as ReactErrorBoundary, FallbackProps } from 'react-error-boundary';
import { useTranslation } from 'react-i18next';
import { toast } from 'sonner';
import { Dialog, DialogContent } from '../Dialog/Dialog';
import { ScrollArea } from '../ScrollArea/ScrollArea';
import { Button } from '../Button/Button';
import { useNotification } from '../../contextProviders';
const isProduction = process.env.NODE_ENV === 'production';
@@ -112,7 +112,7 @@ interface ErrorBoundaryError extends Error {
stack?: string;
}
interface DefaultFallbackProps {
interface DefaultFallbackProps extends FallbackProps {
error: ErrorBoundaryError;
context: string;
resetErrorBoundary: () => void;
@@ -135,6 +135,8 @@ const DefaultFallback = ({
}: DefaultFallbackProps) => {
const { t } = useTranslation('ErrorBoundary');
const [showDetails, setShowDetails] = useState(false);
const { show } = useNotification();
const title = `${t('Something went wrong')}${!isProduction && ` ${t('in')} ${context}`}.`;
const subtitle = t('Sorry, something went wrong there. Try again.');
@@ -143,20 +145,32 @@ const DefaultFallback = ({
const copyErrorToClipboard = () => {
if (code) {
navigator.clipboard.writeText(code);
toast.success(t('Error copied to clipboard'));
show({
title: t('Success'),
message: t('Error copied to clipboard'),
type: 'success',
duration: 3000,
});
}
};
useEffect(() => {
toast.error(title, {
description: subtitle,
// Use a stable ID based on error message to support deduplication
const errorId = `error-${errorTitle || error.message}`;
// We don't need to track shown state - instead rely on the notification deduplication system
show({
title,
message: subtitle,
type: 'error',
duration: 0,
id: errorId,
action: {
label: t('Show Details'),
onClick: () => setShowDetails(true),
},
duration: 0,
});
}, [error, subtitle, t, title]);
}, [error, errorTitle, subtitle, t, title, show]);
if (isProduction) {
return null;
@@ -286,9 +300,8 @@ const ErrorBoundary = ({
<ReactErrorBoundary
fallbackRender={props => (
<FallbackComponent
error={props.error}
{...props}
context={context}
resetErrorBoundary={props.resetErrorBoundary}
/>
)}
onReset={onResetHandler}