import { useEffect } from "react";
import { useRouter } from "next/router";

const useConfirmLeave = (hasUnsavedChanges: boolean) => {
  const router = useRouter();

  useEffect(() => {
    const handleRouteChange = () => {
      if (hasUnsavedChanges) {
        const confirmLeave = window.confirm(
          "Do you want to leave without saving changes?"
        );
        if (!confirmLeave) {
          router.events.emit("routeChangeError");
          throw "routeChange aborted.";
        }
      }
    };

    const handleRouteChangeStart = () => handleRouteChange();

    router.events.on("routeChangeStart", handleRouteChangeStart);

    return () => {
      router.events.off("routeChangeStart", handleRouteChangeStart);
    };
  }, [hasUnsavedChanges, router]);

  return {};
};

export default useConfirmLeave;
