notion-blogの改造メモ(3)

Posted: February 28, 2021

https://manj.io/blog/notion-blog-custom-2 の続き

記事を投稿日降順に並び換え

以下を参考に実装した。

diff --git a/src/pages/blog/index.tsx b/src/pages/blog/index.tsx
index 30428bd..119d083 100644
--- a/src/pages/blog/index.tsx
+++ b/src/pages/blog/index.tsx
@@ -47,7 +49,8 @@ export async function getStaticProps({ preview }) {
   }
 }

 export default ({ posts = [], preview }) => {
+  posts.sort((a, b) => b.Date - a.Date)
   return (
     <>
       <Header titlePre="Blog" />

Dateを元にsortするだけ。

予約投稿機能の追加

未来の日付で投稿された記事を記事リストから省く。

diff --git a/src/lib/notion/getBlogIndex.ts b/src/lib/notion/getBlogIndex.ts
index 495d9ab..a39dbf9 100644
--- a/src/lib/notion/getBlogIndex.ts
+++ b/src/lib/notion/getBlogIndex.ts
@@ -4,7 +4,10 @@ import getTableData from './getTableData'
 import { readFile, writeFile } from '../fs-helpers'
 import { BLOG_INDEX_ID, BLOG_INDEX_CACHE } from './server-constants'

-export default async function getBlogIndex(previews = true) {
+export default async function getBlogIndex(
+  previews = true,
+  include_future_posts = false
+) {
   let postsTable: any = null
   const useCache = process.env.USE_CACHE === 'true'
   const cacheFile = `${BLOG_INDEX_CACHE}${previews ? '_previews' : ''}`
@@ -49,6 +52,16 @@ export default async function getBlogIndex(previews = true) {
       return {}
     }

+    if (!include_future_posts) {
+      const nowDate = Date.now()
+
+      Object.keys(postsTable).forEach(slug => {
+        if (postsTable[slug].Date > nowDate) {
+          delete postsTable[slug]
+        }
+      })
+    }
+
     if (useCache) {
       writeFile(cacheFile, JSON.stringify(postsTable), 'utf8').catch(() => {})
     }

これによって未来の日付で投稿することが実質予約投稿として動作することになる。