plane/web/core/hooks/use-reload-confirmation.tsx
2024-06-11 14:39:52 +05:30

44 lines
1.5 KiB
TypeScript

import { useCallback, useEffect, useState } from "react";
import { useRouter } from "next/navigation";
//TODO: remove temp flag isActive later and use showAlert as the source of truth
const useReloadConfirmations = (isActive = true) => {
const [showAlert, setShowAlert] = useState(false);
// const router = useRouter();
// const handleBeforeUnload = useCallback(
// (event: BeforeUnloadEvent) => {
// if (!isActive || !showAlert) return;
// event.preventDefault();
// event.returnValue = "";
// },
// [isActive, showAlert]
// );
// const handleRouteChangeStart = useCallback(
// (url: string, { shallow }: { shallow: boolean }) => {
// if (!isActive || !showAlert) return;
// const leave = confirm("Are you sure you want to leave? Changes you made may not be saved.");
// if (!leave) {
// router.events.emit("routeChangeError", new Error("Route change cancelled by user"), url, shallow);
// throw "routeChange aborted.";
// }
// },
// [isActive, router.events, showAlert]
// );
// useEffect(() => {
// window.addEventListener("beforeunload", handleBeforeUnload);
// router.events.on("routeChangeStart", handleRouteChangeStart);
// return () => {
// window.removeEventListener("beforeunload", handleBeforeUnload);
// router.events.off("routeChangeStart", handleRouteChangeStart);
// };
// }, [handleBeforeUnload, handleRouteChangeStart, router.events]);
return { setShowAlert };
};
export default useReloadConfirmations;