feat(v2): simplify blog metadata to minimize number of request (#1908)

* feat(v2): simplify blog metadata to minimize number of request

* remove async
This commit is contained in:
Endi 2019-10-29 14:50:54 +07:00 committed by GitHub
parent e6444c0d4d
commit 2e58e839ee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 59 additions and 18 deletions

View file

@ -23,7 +23,6 @@ import {
import {
LoadContext,
PluginContentLoadedActions,
RouteModule,
ConfigureWebpackUtils,
} from '@docusaurus/types';
import {Configuration} from 'webpack';
@ -138,6 +137,25 @@ export default function pluginContentBlog(
(a, b) => b.metadata.date.getTime() - a.metadata.date.getTime(),
);
// Colocate next and prev metadata
blogPosts.forEach((blogPost, index) => {
const prevItem = index > 0 ? blogPosts[index - 1] : null;
if (prevItem) {
blogPost.metadata.prevItem = {
title: prevItem.metadata.title,
permalink: prevItem.metadata.permalink,
};
}
const nextItem =
index < blogPosts.length - 1 ? blogPosts[index + 1] : null;
if (nextItem) {
blogPost.metadata.nextItem = {
title: nextItem.metadata.title,
permalink: nextItem.metadata.permalink,
};
}
});
// Blog pagination routes.
// Example: `/blog`, `/blog/page/1`, `/blog/page/2`
const totalCount = blogPosts.length;
@ -267,10 +285,7 @@ export default function pluginContentBlog(
}),
);
blogItems.forEach((blogItem, index) => {
const prevItem = index > 0 ? blogItems[index - 1] : null;
const nextItem =
index < blogItems.length - 1 ? blogItems[index + 1] : null;
blogItems.map(blogItem => {
const {metadata, metadataPath} = blogItem;
const {source, permalink} = metadata;
@ -281,9 +296,7 @@ export default function pluginContentBlog(
modules: {
content: source,
metadata: aliasedSource(metadataPath),
prevItem: prevItem && aliasedSource(prevItem.metadataPath),
nextItem: nextItem && aliasedSource(nextItem.metadataPath),
} as RouteModule,
},
});
});