feat(SW-2863): Move contentstack router to trpc package * Add exports to packages and lint rule to prevent relative imports * Add env to trpc package * Add eslint to trpc package * Apply lint rules * Use direct imports from trpc package * Add lint-staged config to trpc * Move lang enum to common * Restructure trpc package folder structure * WIP first step * update internal imports in trpc * Fix most errors in scandic-web Just 100 left... * Move Props type out of trpc * Fix CategorizedFilters types * Move more schemas in hotel router * Fix deps * fix getNonContentstackUrls * Fix import error * Fix entry error handling * Fix generateMetadata metrics * Fix alertType enum * Fix duplicated types * lint:fix * Merge branch 'master' into feat/sw-2863-move-contentstack-router-to-trpc-package * Fix broken imports * Merge branch 'master' into feat/sw-2863-move-contentstack-router-to-trpc-package Approved-by: Linus Flood
43 lines
765 B
TypeScript
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
|
|
}
|