From a685051187cef1e8cc89d63c9f84753e00e00b49 Mon Sep 17 00:00:00 2001 From: Eric Jinks Date: Wed, 28 Mar 2018 10:03:50 +1000 Subject: [PATCH] Filter out draft posts & empty categories --- src/App.js | 11 ++++++++--- src/util/collection.js | 9 ++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/App.js b/src/App.js index b3d957b..700fe0d 100644 --- a/src/App.js +++ b/src/App.js @@ -20,7 +20,7 @@ import ServiceWorkerNotifications from './components/ServiceWorkerNotifications' import AOS from './components/AOS' import Spinner from './components/Spinner' import data from './data.json' -import { documentHasTerm } from './util/collection' +import { documentHasTerm, getCollectionTerms } from './util/collection' class App extends Component { state = { @@ -69,8 +69,13 @@ class App extends Component { headerScripts } = globalSettings - const posts = this.getDocuments('posts') - const postCategories = this.getDocuments('postCategories') + const posts = this.getDocuments('posts').filter( + post => post.status !== 'Draft' + ) + const categoriesFromPosts = getCollectionTerms(posts, 'categories') + const postCategories = this.getDocuments('postCategories').filter( + category => categoriesFromPosts.indexOf(category.title.toLowerCase()) >= 0 + ) return ( diff --git a/src/util/collection.js b/src/util/collection.js index bcb0de3..8ab2e6a 100644 --- a/src/util/collection.js +++ b/src/util/collection.js @@ -14,8 +14,11 @@ export const getCollectionTerms = ( let terms = collection .filter(collectionItem => collectionItem[taxonomyName]) .reduce((acc, collectionItem) => { - const termString = collectionItem[taxonomyName] - const collectionItemTerms = termString.split(',').map(term => term.trim()) + const termField = collectionItem[taxonomyName] + const collectionItemTerms = + typeof termField === 'string' + ? termField.split(',').map(term => _kebabCase(term.trim())) + : termField.map(term => _kebabCase(Object.values(term)[0])) return _uniq([...acc, ...collectionItemTerms]) }, []) .sort() @@ -30,6 +33,6 @@ export const documentHasTerm = (doc, taxonomyName, term) => { typeof termField === 'string' ? termField.split(',').map(term => _kebabCase(term)) : termField.map(term => _kebabCase(Object.values(term)[0])) - // console.log(terms.includes(_kebabCase(term))) + return terms.includes(_kebabCase(term)) }