Skip to content

Commit

Permalink
Merge pull request #133 from thegalactiks/avoid-page-duplication
Browse files Browse the repository at this point in the history
fix(@galactiks/explorer): avoid page duplication
  • Loading branch information
emmanuelgautier authored Jan 27, 2024
2 parents 6c1414d + 364b204 commit 7b87078
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 30 deletions.
9 changes: 3 additions & 6 deletions packages/explorer/src/core/content/hydrate/common.mts
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
import type { ContentlayerWebPageDocument } from '../../types/index.mjs'
import { createIdentifierFromString } from '../utils.mjs';
import { addBodyRender, emptyRender } from './render.mjs';

export function createPage<T>(
identifier: string,
document: Partial<ContentlayerWebPageDocument>
) {
const id = createIdentifierFromString(identifier);

return {
_id: id,
identifier: id,
slug: id,
_id: identifier,
identifier,
slug: identifier,
description: '',
type: 'Page',
name: identifier,
Expand Down
49 changes: 25 additions & 24 deletions packages/explorer/src/core/content/hydrate/listing-pages.mts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type { Id } from '@galactiks/contentlayer';
import { documentByIdentifierSelector, isInLanguage } from '../selectors.mjs';
import { createIdentifierFromString } from '../utils.mjs';
import type { ContentlayerWebPageDocument, ContentlayerDocumentWithRender, ContentlayerWebPageDocumentWithRender } from '../../types/index.mjs';

import { createPage } from './common.mjs';
Expand Down Expand Up @@ -29,38 +30,38 @@ export const computeRemainingListingPages = () => async (
inLanguage: _d.inLanguage,
};

// If parent page does not exist, create it
if (
_d.isPartOf &&
acc.some(
(_a) => _a.identifier === _d.isPartOf && isInLanguage(_a, _d.inLanguage)
) === false
) {
let translationOfWork: Id | undefined = undefined;
if (_d.translationOfWork && _d.translationOfWork['@id']) {
const translationOfWorkDocument = getDocumentByIdentifier(
_d.translationOfWork['@id']
);
if (translationOfWorkDocument?.isPartOf) {
translationOfWork = {
type: 'Id',
'@id': translationOfWorkDocument.isPartOf,
};
if (_d.isPartOf) {
const _isPartOfIdentifier = createIdentifierFromString(_d.isPartOf);

// If parent page does not exist, create it
if (acc.some((_a) => _a.identifier === _isPartOfIdentifier && isInLanguage(_a, _d.inLanguage)) === false) {
let translationOfWork: Id | undefined = undefined;
if (_d.translationOfWork && _d.translationOfWork['@id']) {
const translationOfWorkDocument = getDocumentByIdentifier(
_d.translationOfWork['@id']
);
if (translationOfWorkDocument?.isPartOf) {
translationOfWork = {
type: 'Id',
'@id': translationOfWorkDocument.isPartOf,
};
}
}
}

acc = acc.concat(
createListingPage(_d.isPartOf, {
...templateDocument,
translationOfWork,
})
);
acc = acc.concat(
createListingPage(_isPartOfIdentifier, {
...templateDocument,
translationOfWork,
})
);
}
}

// Create all keywords pages not existing yet
if (Array.isArray(_d.keywords)) {
acc = acc.concat(
_d.keywords
.map(createIdentifierFromString)
.filter(
(_k) =>
_k &&
Expand Down

0 comments on commit 7b87078

Please sign in to comment.