import React, { useEffect, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import ErrorImage from '../src/Images/Error.png'; // Adjust if path differs const subDirectory = import.meta.env.ENV_BASE_URL const GlobalErrorHandler = ({ children }) => { const navigate = useNavigate(); const [hasError, setHasError] = useState(false); useEffect(() => { const handleError = (event) => { const error = event?.reason || event?.message; // Skip known harmless errors (like cancellation or validation) if ( error?.errorFields || error?.name === 'CanceledError' || // Axios cancel error error?.message?.includes('canceled') || // string version error?.message?.includes('Request failed with status code 499') || // some systems use this error?.message?.includes('Network request cancelled') || (typeof error === 'string' && ( error.includes('validation') || error.includes('canceled') || error.includes('aborted') )) ) { return; } console.error('Global Error:', error); setHasError(true); }; window.onerror = handleError; window.onunhandledrejection = handleError; return () => { window.onerror = null; window.onunhandledrejection = null; }; }, []); const goHome = () => { setHasError(false); // ✅ Reset error so we can see the app again navigate(`${subDirectory}`); }; if (hasError) { return (
An unexpected error occurred. Please try again later or{' '} Home.