"use client";

import { useEffect } from "react";

// Detects stale-deployment chunk errors and reloads once to fetch the new build.
const isChunkError = (error: Error) =>
  /ChunkLoadError|Loading chunk|Failed to fetch dynamically imported module|Importing a module script failed/i.test(
    `${error?.name} ${error?.message}`
  );

export default function GlobalError({
  error,
  reset,
}: {
  error: Error & { digest?: string };
  reset: () => void;
}) {
  useEffect(() => {
    if (isChunkError(error) && !sessionStorage.getItem("chunk-reloaded")) {
      sessionStorage.setItem("chunk-reloaded", "1"); // ponytail: once per session, avoids reload loops
      window.location.reload();
    } else {
      sessionStorage.removeItem("chunk-reloaded");
    }
  }, [error]);

  return (
    <html>
      <body>
        <h2>Something went wrong!</h2>
        <button onClick={() => reset()}>Try again</button>
      </body>
    </html>
  );
}
