UNPKG

analytica-frontend-lib

Version:

Repositório público dos componentes utilizados nas plataformas da Analytica Ensino

57 lines (55 loc) 1.59 kB
import { useQuizStore } from "./chunk-G7IP4VLI.mjs"; // src/hooks/useDraftAutoSave.ts import { useEffect, useMemo } from "react"; function useDraftAutoSave({ apiClient, enabled, endpoint = "/activities/{activityId}/draft" }) { const { setDraftApiClient, saveDraft } = useQuizStore(); const draftApiClient = useMemo( () => ({ saveDraft: async (activityId, payload) => { const url = endpoint.replace("{activityId}", activityId); await apiClient.post(url, payload); return { success: true }; }, loadDraft: async (activityId) => { const url = endpoint.replace("{activityId}", activityId); const response = await apiClient.get(url); const data = response.data?.data; return data ? { hasDraft: data.hasDraft, answers: data.answers || [] } : null; } }), [apiClient, endpoint] ); useEffect(() => { if (enabled) { setDraftApiClient(draftApiClient); } else { setDraftApiClient(null); } return () => { setDraftApiClient(null); }; }, [enabled, draftApiClient, setDraftApiClient]); useEffect(() => { if (!enabled) return; const handleVisibilityChange = () => { if (document.visibilityState === "hidden") { saveDraft(); } }; document.addEventListener("visibilitychange", handleVisibilityChange); return () => document.removeEventListener("visibilitychange", handleVisibilityChange); }, [enabled, saveDraft]); } export { useDraftAutoSave }; //# sourceMappingURL=chunk-OOFGQDRU.mjs.map