42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
import { useCookie, useRoute } from "#imports";
|
|
let showWarning = true;
|
|
export const useContentPreview = () => {
|
|
const getPreviewToken = () => {
|
|
return useCookie("previewToken").value || import.meta.client && sessionStorage.getItem("previewToken") || void 0;
|
|
};
|
|
const setPreviewToken = (token) => {
|
|
useCookie("previewToken").value = token;
|
|
useRoute().query.preview = token || "";
|
|
if (import.meta.client) {
|
|
if (token) {
|
|
sessionStorage.setItem("previewToken", token);
|
|
} else {
|
|
sessionStorage.removeItem("previewToken");
|
|
}
|
|
window.location.reload();
|
|
}
|
|
};
|
|
const isEnabled = () => {
|
|
const query = useRoute().query;
|
|
if (Object.prototype.hasOwnProperty.call(query, "preview") && !query.preview) {
|
|
return false;
|
|
}
|
|
if (query.preview || useCookie("previewToken").value) {
|
|
if (import.meta.dev && showWarning) {
|
|
console.warn("[content] Client DB enabled since a preview token is set (either in query or cookie).");
|
|
showWarning = false;
|
|
}
|
|
return true;
|
|
}
|
|
if (import.meta.client && sessionStorage.getItem("previewToken")) {
|
|
return true;
|
|
}
|
|
return false;
|
|
};
|
|
return {
|
|
isEnabled,
|
|
getPreviewToken,
|
|
setPreviewToken
|
|
};
|
|
};
|