Files
web/lib/previewContext.ts

43 lines
765 B
TypeScript

import { cache } from "react"
interface PreviewData {
hash: string
uid: string
}
const getRef = cache((): { current?: PreviewData } => ({
current: undefined,
}))
/**
* Set the preview hash for the current request
*
* It works kind of like React's context,
* but on the server side, per request.
*
* @param hash
*/
export function setPreviewData(data?: PreviewData) {
getRef().current = data
}
/**
* Get the preview hash set for the current request
*/
export function getPreviewHash() {
return getRef().current?.hash
}
/**
* Check if the current request is a preview by comparing the uid
*/
export function isPreviewByUid(uid: string) {
const data = getRef().current
if (data?.hash) {
return data.uid === uid
}
return false
}