@ztl-uwu/nuxt-content
Version:
Write your content inside your Nuxt app
42 lines (41 loc) • 1.26 kB
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
};
};