Skip to content

Commit bbf1f15

Browse files
jgierer12pieh
authored andcommitted
feat(www): Filter posts by date (#9400)
Closes #9298
1 parent b7d3b74 commit bbf1f15

File tree

4 files changed

+26
-5
lines changed

4 files changed

+26
-5
lines changed

www/gatsby-node.js

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const url = require(`url`)
99
const getpkgjson = require(`get-package-json-from-github`)
1010
const parseGHUrl = require(`parse-github-url`)
1111
const { GraphQLClient } = require(`graphql-request`)
12+
const moment = require(`moment`)
1213

1314
let ecosystemFeaturedItems
1415

@@ -156,6 +157,7 @@ exports.createPages = ({ graphql, actions }) => {
156157
fields {
157158
slug
158159
package
160+
released
159161
}
160162
frontmatter {
161163
title
@@ -251,9 +253,13 @@ exports.createPages = ({ graphql, actions }) => {
251253
return undefined
252254
})
253255

256+
const releasedBlogPosts = blogPosts.filter(post =>
257+
_.get(post, `node.fields.released`)
258+
)
259+
254260
// Create blog-list pages.
255261
const postsPerPage = 8
256-
const numPages = Math.ceil(blogPosts.length / postsPerPage)
262+
const numPages = Math.ceil(releasedBlogPosts.length / postsPerPage)
257263

258264
Array.from({ length: numPages }).forEach((_, i) => {
259265
createPage({
@@ -270,7 +276,9 @@ exports.createPages = ({ graphql, actions }) => {
270276

271277
// Create blog-post pages.
272278
blogPosts.forEach((edge, index) => {
273-
const next = index === 0 ? null : blogPosts[index - 1].node
279+
let next = index === 0 ? null : blogPosts[index - 1].node
280+
if (next && !_.get(next, `fields.released`)) next = null
281+
274282
const prev =
275283
index === blogPosts.length - 1 ? null : blogPosts[index + 1].node
276284

@@ -285,7 +293,7 @@ exports.createPages = ({ graphql, actions }) => {
285293
})
286294
})
287295

288-
const tagLists = blogPosts
296+
const tagLists = releasedBlogPosts
289297
.filter(post => _.get(post, `node.frontmatter.tags`))
290298
.map(post => _.get(post, `node.frontmatter.tags`))
291299

@@ -409,7 +417,7 @@ exports.createPages = ({ graphql, actions }) => {
409417
})
410418
}
411419

412-
// Create slugs for files.
420+
// Create slugs for files, set released status for blog posts.
413421
exports.onCreateNode = ({ node, actions, getNode, reporter }) => {
414422
const { createNodeField } = actions
415423
let slug
@@ -442,6 +450,16 @@ exports.onCreateNode = ({ node, actions, getNode, reporter }) => {
442450
} else {
443451
slug = `/${parsedFilePath.dir}/`
444452
}
453+
454+
// Set released status for blog posts.
455+
if (_.includes(parsedFilePath.dir, `blog`)) {
456+
let released = false
457+
const date = _.get(node, `frontmatter.date`)
458+
if (date) {
459+
released = moment().isSameOrAfter(moment.utc(date))
460+
}
461+
createNodeField({ node, name: `released`, value: released })
462+
}
445463
}
446464
// Add slugs for package READMEs.
447465
if (
@@ -605,7 +623,7 @@ exports.onCreateNode = ({ node, actions, getNode, reporter }) => {
605623

606624
exports.onCreatePage = ({ page, actions }) => {
607625
// add lists of featured items to Ecosystem page
608-
if (page.path === "/ecosystem/") {
626+
if (page.path === `/ecosystem/`) {
609627
const { createPage, deletePage } = actions
610628
const oldPage = Object.assign({}, page)
611629

www/src/pages/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ export const pageQuery = graphql`
245245
filter: {
246246
frontmatter: { draft: { ne: true } }
247247
fileAbsolutePath: { regex: "/docs.blog/" }
248+
fields: { released: { eq: true } }
248249
}
249250
) {
250251
edges {

www/src/templates/tags.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ export const pageQuery = graphql`
6565
filter: {
6666
frontmatter: { tags: { in: [$tag] } }
6767
fileAbsolutePath: { regex: "/docs.blog/" }
68+
fields: { released: { eq: true } }
6869
}
6970
) {
7071
totalCount

www/src/templates/template-blog-list.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ export const pageQuery = graphql`
116116
filter: {
117117
frontmatter: { draft: { ne: true } }
118118
fileAbsolutePath: { regex: "/docs.blog/" }
119+
fields: { released: { eq: true } }
119120
}
120121
limit: $limit
121122
skip: $skip

0 commit comments

Comments
 (0)