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
}
