import { hash } from "~/lib/utils.js" import { useStorage } from "@vueuse/core" export const pendingSubmission = (form) => { const formPendingSubmissionKey = computed(() => { return form ? form.form_pending_submission_key + "-" + hash(window.location.href) : "" }) const formPendingSubmissionTimerKey = computed(() => { return formPendingSubmissionKey.value + "-timer" }) const enabled = computed(() => { return form?.auto_save ?? false }) const set = (value) => { if (import.meta.server || !enabled.value) return useStorage(formPendingSubmissionKey.value).value = value === null ? value : JSON.stringify(value) } const remove = () => { return set(null) } const get = (defaultValue = {}) => { if (import.meta.server || !enabled.value) return const pendingSubmission = useStorage(formPendingSubmissionKey.value).value return pendingSubmission ? JSON.parse(pendingSubmission) : defaultValue } const setTimer = (value) => { if (import.meta.server) return useStorage(formPendingSubmissionTimerKey.value).value = value } const removeTimer = () => { return setTimer(null) } const getTimer = (defaultValue = null) => { if (import.meta.server) return return useStorage(formPendingSubmissionTimerKey.value).value ?? defaultValue } return { enabled, set, get, remove, setTimer, removeTimer, getTimer, } }