45 lines
1.4 KiB
TypeScript
45 lines
1.4 KiB
TypeScript
import { useEffect } from "react";
|
|
import { setLocalStorageQuestions } from "../utils/setLocalStorageQuestions";
|
|
|
|
const useSaveOnDisconnect = (
|
|
noChange: boolean,
|
|
QUESTION_OBJECT_KEY: string,
|
|
SavedQuestionData: any,
|
|
) => {
|
|
useEffect(() => {
|
|
const handleBeforeUnload = (event: BeforeUnloadEvent) => {
|
|
console.log("disconnect");
|
|
if (noChange) {
|
|
if (SavedQuestionData?.isBase === 1) {
|
|
setLocalStorageQuestions(QUESTION_OBJECT_KEY, SavedQuestionData);
|
|
} else {
|
|
setLocalStorageQuestions(QUESTION_OBJECT_KEY, SavedQuestionData);
|
|
}
|
|
}
|
|
};
|
|
|
|
const handleOffline = () => {
|
|
console.log("disconnect");
|
|
if (noChange) {
|
|
if (SavedQuestionData?.isBase === 1) {
|
|
setLocalStorageQuestions(QUESTION_OBJECT_KEY, SavedQuestionData);
|
|
} else {
|
|
setLocalStorageQuestions(QUESTION_OBJECT_KEY, SavedQuestionData);
|
|
}
|
|
}
|
|
};
|
|
|
|
// Add event listeners
|
|
window.addEventListener("beforeunload", handleBeforeUnload);
|
|
window.addEventListener("offline", handleOffline);
|
|
|
|
// Cleanup function
|
|
return () => {
|
|
window.removeEventListener("beforeunload", handleBeforeUnload);
|
|
window.removeEventListener("offline", handleOffline);
|
|
};
|
|
}, [noChange, QUESTION_OBJECT_KEY, SavedQuestionData]); // Add dependencies to the hook
|
|
};
|
|
|
|
export default useSaveOnDisconnect;
|