Files
klz-cables.com/.pnpm-store/v10/files/cc/ee66c9bdffbbae4d5bb2955c5281ad2bd30fb77bb437f7686b11c17610e5c6fd870c6a41e3f611c582a6a227cea3ff07c9f69fb35606a1ead2825a27771847
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

71 lines
2.2 KiB
Plaintext

import { extractJWT } from 'payload';
/**
* Multi-level check to determine whether live preview is enabled on a collection or global.
* For example, live preview can be enabled at both the root config level, or on the entity's config.
* If a collectionConfig/globalConfig is provided, checks if it is enabled at the root level,
* or on the entity's own config.
*/
export const isPreviewEnabled = ({
collectionConfig,
globalConfig
}) => {
if (globalConfig) {
return Boolean(globalConfig.admin?.preview);
}
if (collectionConfig) {
return Boolean(collectionConfig.admin?.preview);
}
};
/**
* 1. Looks up the relevant live preview config, which could have been enabled:
* a. At the root level, e.g. `collections: ['posts']`
* b. On the collection or global config, e.g. `admin: { livePreview: { ... } }`
* 2. Determines if live preview is enabled, and if not, early returns.
* 3. Merges the config with the root config, if necessary.
* 4. Executes the `url` function, if necessary.
*
* Notice: internal function only. Subject to change at any time. Use at your own risk.
*/
export const handlePreview = async ({
collectionSlug,
config,
data,
globalSlug,
operation,
req
}) => {
const collectionConfig = collectionSlug ? req.payload.collections[collectionSlug]?.config : undefined;
const globalConfig = globalSlug ? config.globals.find(g => g.slug === globalSlug) : undefined;
const enabled = isPreviewEnabled({
collectionConfig,
globalConfig
});
if (!enabled) {
return {};
}
const generatePreviewURL = collectionConfig?.admin?.preview || globalConfig?.admin?.preview;
const token = extractJWT(req);
let previewURL;
if (typeof generatePreviewURL === 'function' && operation !== 'create') {
try {
const result = await generatePreviewURL(data, {
locale: req.locale,
req,
token
});
if (typeof result === 'string') {
previewURL = result;
}
} catch (err) {
req.payload.logger.error({
err,
msg: `There was an error executing the live preview URL function for ${collectionSlug || globalSlug}`
});
}
}
return {
isPreviewEnabled: enabled,
previewURL
};
};
//# sourceMappingURL=handlePreview.js.map