All files / src/app/(site)/(pages)/product error.tsx

0% Statements 0/42
100% Branches 0/0
0% Functions 0/1
0% Lines 0/42

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43                                                                                     
'use client';

import { useEffect } from 'react';
import { ErrorPage } from '@/components/shared/ErrorPage';
import { logError } from '@/lib/errors/error-analytics';

/**
 * Product Error Boundary
 *
 * Handles errors when viewing product details.
 */
export default function ProductError({
  error,
  reset,
}: {
  error: Error & { digest?: string };
  reset: () => void;
}) {
  useEffect(() => {
    logError(error, { context: 'product', digest: error.digest });
  }, [error]);

  // Check if it's a not found error
  const isNotFound = error.message.toLowerCase().includes('not found');

  return (
    <ErrorPage
      title={isNotFound ? 'Product not found' : 'Unable to load product'}
      message={
        isNotFound
          ? 'The product you are looking for is no longer available.'
          : "We couldn't load this product. Please try again."
      }
      variant={isNotFound ? 'not-found' : 'error'}
      errorCode={error.digest}
      showRetry={!isNotFound}
      showHome
      showBack
      onRetry={reset}
    />
  );
}