school-dashboard-exercise/src/Hooks/useSaveOnDisconnect.tsx
karimalden b873ac0bba format
2024-08-07 14:52:29 +03:00

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;