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
209 lines
7.0 KiB
Plaintext
209 lines
7.0 KiB
Plaintext
import { getNextRequestI18n } from '../../utilities/getNextRequestI18n.js';
|
|
import { generateAccountViewMetadata } from '../Account/metadata.js';
|
|
import { generateBrowseByFolderMetadata } from '../BrowseByFolder/metadata.js';
|
|
import { generateCollectionFolderMetadata } from '../CollectionFolders/metadata.js';
|
|
import { generateCollectionTrashMetadata } from '../CollectionTrash/metadata.js';
|
|
import { generateCreateFirstUserViewMetadata } from '../CreateFirstUser/metadata.js';
|
|
import { generateDashboardViewMetadata } from '../Dashboard/metadata.js';
|
|
import { generateDocumentViewMetadata } from '../Document/metadata.js';
|
|
import { generateForgotPasswordViewMetadata } from '../ForgotPassword/metadata.js';
|
|
import { generateListViewMetadata } from '../List/metadata.js';
|
|
import { generateLoginViewMetadata } from '../Login/metadata.js';
|
|
import { generateNotFoundViewMetadata } from '../NotFound/metadata.js';
|
|
import { generateResetPasswordViewMetadata } from '../ResetPassword/metadata.js';
|
|
import { generateUnauthorizedViewMetadata } from '../Unauthorized/metadata.js';
|
|
import { generateVerifyViewMetadata } from '../Verify/metadata.js';
|
|
import { generateCustomViewMetadata } from './generateCustomViewMetadata.js';
|
|
import { getCustomViewByRoute } from './getCustomViewByRoute.js';
|
|
const oneSegmentMeta = {
|
|
'create-first-user': generateCreateFirstUserViewMetadata,
|
|
folders: generateBrowseByFolderMetadata,
|
|
forgot: generateForgotPasswordViewMetadata,
|
|
login: generateLoginViewMetadata,
|
|
logout: generateUnauthorizedViewMetadata,
|
|
'logout-inactivity': generateUnauthorizedViewMetadata,
|
|
unauthorized: generateUnauthorizedViewMetadata
|
|
};
|
|
export const generatePageMetadata = async ({
|
|
config: configPromise,
|
|
params: paramsPromise
|
|
}) => {
|
|
const config = await configPromise;
|
|
const params = await paramsPromise;
|
|
const folderCollectionSlugs = config.collections.reduce((acc, {
|
|
slug,
|
|
folders
|
|
}) => {
|
|
if (folders) {
|
|
return [...acc, slug];
|
|
}
|
|
return acc;
|
|
}, []);
|
|
const segments = Array.isArray(params.segments) ? params.segments : [];
|
|
const currentRoute = `/${segments.join('/')}`;
|
|
const [segmentOne, segmentTwo, segmentThree] = segments;
|
|
const isGlobal = segmentOne === 'globals';
|
|
const isCollection = segmentOne === 'collections';
|
|
const i18n = await getNextRequestI18n({
|
|
config
|
|
});
|
|
let meta;
|
|
// TODO: handle custom routes
|
|
const collectionConfig = isCollection && segments.length > 1 && config?.collections?.find(collection => collection.slug === segmentTwo);
|
|
const globalConfig = isGlobal && segments.length > 1 && config?.globals?.find(global => global.slug === segmentTwo);
|
|
switch (segments.length) {
|
|
case 0:
|
|
{
|
|
meta = await generateDashboardViewMetadata({
|
|
config,
|
|
i18n
|
|
});
|
|
break;
|
|
}
|
|
case 1:
|
|
{
|
|
if (folderCollectionSlugs.length && `/${segmentOne}` === config.admin.routes.browseByFolder) {
|
|
// --> /:folderCollectionSlug
|
|
meta = await oneSegmentMeta.folders({
|
|
config,
|
|
i18n
|
|
});
|
|
} else if (segmentOne === 'account') {
|
|
// --> /account
|
|
meta = await generateAccountViewMetadata({
|
|
config,
|
|
i18n
|
|
});
|
|
break;
|
|
} else if (oneSegmentMeta[segmentOne]) {
|
|
// --> /create-first-user
|
|
// --> /forgot
|
|
// --> /login
|
|
// --> /logout
|
|
// --> /logout-inactivity
|
|
// --> /unauthorized
|
|
meta = await oneSegmentMeta[segmentOne]({
|
|
config,
|
|
i18n
|
|
});
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case 2:
|
|
{
|
|
if (`/${segmentOne}` === config.admin.routes.reset) {
|
|
// --> /reset/:token
|
|
meta = await generateResetPasswordViewMetadata({
|
|
config,
|
|
i18n
|
|
});
|
|
} else if (folderCollectionSlugs.length && `/${segmentOne}` === config.admin.routes.browseByFolder) {
|
|
// --> /browse-by-folder/:folderID
|
|
meta = await generateBrowseByFolderMetadata({
|
|
config,
|
|
i18n
|
|
});
|
|
} else if (isCollection) {
|
|
// --> /collections/:collectionSlug
|
|
meta = await generateListViewMetadata({
|
|
collectionConfig,
|
|
config,
|
|
i18n
|
|
});
|
|
} else if (isGlobal) {
|
|
// --> /globals/:globalSlug
|
|
meta = await generateDocumentViewMetadata({
|
|
config,
|
|
globalConfig,
|
|
i18n,
|
|
params
|
|
});
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
if (segmentTwo === 'verify') {
|
|
// --> /:collectionSlug/verify/:token
|
|
meta = await generateVerifyViewMetadata({
|
|
config,
|
|
i18n
|
|
});
|
|
} else if (isCollection) {
|
|
if (segmentThree === 'trash' && segments.length === 3 && collectionConfig) {
|
|
// Collection Trash Views
|
|
// --> /collections/:collectionSlug/trash
|
|
meta = await generateCollectionTrashMetadata({
|
|
collectionConfig,
|
|
config,
|
|
i18n,
|
|
params
|
|
});
|
|
} else if (config.folders && segmentThree === config.folders.slug) {
|
|
if (folderCollectionSlugs.includes(collectionConfig.slug)) {
|
|
// Collection Folder Views
|
|
// --> /collections/:collectionSlug/:folderCollectionSlug
|
|
// --> /collections/:collectionSlug/:folderCollectionSlug/:id
|
|
meta = await generateCollectionFolderMetadata({
|
|
collectionConfig,
|
|
config,
|
|
i18n,
|
|
params
|
|
});
|
|
}
|
|
} else {
|
|
// Collection Document Views
|
|
// --> /collections/:collectionSlug/:id
|
|
// --> /collections/:collectionSlug/:id/versions
|
|
// --> /collections/:collectionSlug/:id/versions/:version
|
|
// --> /collections/:collectionSlug/:id/api
|
|
// --> /collections/:collectionSlug/trash/:id
|
|
meta = await generateDocumentViewMetadata({
|
|
collectionConfig,
|
|
config,
|
|
i18n,
|
|
params
|
|
});
|
|
}
|
|
} else if (isGlobal) {
|
|
// Global Document Views
|
|
// --> /globals/:globalSlug/versions
|
|
// --> /globals/:globalSlug/versions/:version
|
|
// --> /globals/:globalSlug/api
|
|
meta = await generateDocumentViewMetadata({
|
|
config,
|
|
globalConfig,
|
|
i18n,
|
|
params
|
|
});
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
if (!meta) {
|
|
const {
|
|
viewConfig,
|
|
viewKey
|
|
} = getCustomViewByRoute({
|
|
config,
|
|
currentRoute
|
|
});
|
|
if (viewKey) {
|
|
// Custom Views
|
|
// --> /:path
|
|
meta = await generateCustomViewMetadata({
|
|
config,
|
|
i18n,
|
|
viewConfig
|
|
});
|
|
} else {
|
|
meta = await generateNotFoundViewMetadata({
|
|
config,
|
|
i18n
|
|
});
|
|
}
|
|
}
|
|
return meta;
|
|
};
|
|
//# sourceMappingURL=metadata.js.map |