Files
klz-cables.com/.pnpm-store/v10/files/5d/3738aadef422afe4fb43340c3123ed38e09d1074f44ec34816e516a47ac39793df347d5a9aef5977ee0551f44beb82f431c134178b970fb4fe29e7c722e340
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

150 lines
4.1 KiB
Plaintext

import { getNextRequestI18n } from '../../utilities/getNextRequestI18n.js';
import { generateAPIViewMetadata } from '../API/metadata.js';
import { generateEditViewMetadata } from '../Edit/metadata.js';
import { generateNotFoundViewMetadata } from '../NotFound/metadata.js';
import { generateVersionViewMetadata } from '../Version/metadata.js';
import { generateVersionsViewMetadata } from '../Versions/metadata.js';
import { getDocumentView } from './getDocumentView.js';
export const getMetaBySegment = async ({
collectionConfig,
config,
globalConfig,
params
}) => {
const {
segments
} = params;
let fn = null;
const [segmentOne] = segments;
const isCollection = segmentOne === 'collections';
const isGlobal = segmentOne === 'globals';
const isEditing = isGlobal || Boolean(isCollection && segments?.length > 2 && segments[2] !== 'create');
if (isCollection) {
// `/:collection/:id`
if (params.segments.length === 3) {
fn = generateEditViewMetadata;
}
// `/collections/:collection/trash/:id`
if (segments.length === 4 && segments[2] === 'trash') {
fn = args => generateEditViewMetadata({
...args,
isReadOnly: true
});
}
// `/:collection/:id/:view`
if (params.segments.length === 4) {
switch (params.segments[3]) {
case 'api':
// `/:collection/:id/api`
fn = generateAPIViewMetadata;
break;
case 'versions':
// `/:collection/:id/versions`
fn = generateVersionsViewMetadata;
break;
default:
break;
}
}
// `/:collection/:id/:slug-1/:slug-2`
if (params.segments.length === 5) {
switch (params.segments[3]) {
case 'versions':
// `/:collection/:id/versions/:version`
fn = generateVersionViewMetadata;
break;
default:
break;
}
}
// `/collections/:collection/trash/:id/:view`
if (segments.length === 5 && segments[2] === 'trash') {
switch (segments[4]) {
case 'api':
fn = generateAPIViewMetadata;
break;
case 'versions':
fn = generateVersionsViewMetadata;
break;
default:
break;
}
}
// `/collections/:collection/trash/:id/versions/:versionID`
if (segments.length === 6 && segments[2] === 'trash' && segments[4] === 'versions') {
fn = generateVersionViewMetadata;
}
}
if (isGlobal) {
// `/:global`
if (params.segments?.length === 2) {
fn = generateEditViewMetadata;
}
// `/:global/:view`
if (params.segments?.length === 3) {
switch (params.segments[2]) {
case 'api':
// `/:global/api`
fn = generateAPIViewMetadata;
break;
case 'versions':
// `/:global/versions`
fn = generateVersionsViewMetadata;
break;
default:
break;
}
}
// `/:global/versions/:version`
if (params.segments?.length === 4 && params.segments[2] === 'versions') {
fn = generateVersionViewMetadata;
}
}
const i18n = await getNextRequestI18n({
config
});
if (typeof fn === 'function') {
return fn({
collectionConfig,
config,
globalConfig,
i18n,
isEditing
});
} else {
const {
viewKey
} = getDocumentView({
collectionConfig,
config,
docPermissions: {
create: true,
delete: true,
fields: true,
read: true,
readVersions: true,
update: true
},
globalConfig,
routeSegments: typeof segments === 'string' ? [segments] : segments
});
if (viewKey) {
const customViewConfig = collectionConfig?.admin?.components?.views?.edit?.[viewKey] || globalConfig?.admin?.components?.views?.edit?.[viewKey];
if (customViewConfig) {
return generateEditViewMetadata({
collectionConfig,
config,
globalConfig,
i18n,
isEditing,
view: viewKey
});
}
}
}
return generateNotFoundViewMetadata({
config,
i18n
});
};
//# sourceMappingURL=getMetaBySegment.js.map