diff --git a/src/pages/[...slug].astro b/src/pages/[...slug].astro
index 7dbe8a1..8ea9769 100644
--- a/src/pages/[...slug].astro
+++ b/src/pages/[...slug].astro
@@ -3,7 +3,7 @@ import cx from 'classnames';
import { getCollection } from 'astro:content';
-import { sortByDate } from '../utils';
+import { formatPosts, sortByDate } from '../utils';
import { dateToFormat, dateToISO, wordCount } from '../utils';
import GridLayout from '../layouts/GridLayout.astro';
@@ -17,17 +17,17 @@ import { mapping } from '../mdx-components';
export async function getStaticPaths() {
const journalEntries = await getCollection('journal');
const numberOfPages = journalEntries.length;
- journalEntries.sort(sortByDate).reverse();
+ const formattedJournalEntries = formatPosts(journalEntries, { sortOrder: 'asc' });
- return journalEntries.map((entry, index) => ({
+ return formattedJournalEntries.map((entry, index) => ({
params: { slug: entry.slug },
props: {
entry,
next:
index + 1 === numberOfPages
? { slug: null, data: null }
- : journalEntries[index + 1],
- prev: index === 0 ? {} : journalEntries[index - 1],
+ : formattedJournalEntries[index + 1],
+ prev: index === 0 ? {} : formattedJournalEntries[index - 1],
},
}));
}
diff --git a/src/pages/journal.astro b/src/pages/journal.astro
index a3fece1..2a6d977 100644
--- a/src/pages/journal.astro
+++ b/src/pages/journal.astro
@@ -1,7 +1,7 @@
---
import { getCollection } from 'astro:content';
-import { sortByDate } from '../utils';
+import { formatPosts } from '../utils';
import GridLayout from '../layouts/GridLayout.astro';
import PageTitle from '../components/PageTitle.astro';
@@ -12,10 +12,10 @@ import { Content as Intro } from '../text/journal/intro.mdx';
import { mapping } from '../mdx-components';
-const allJournal = await getCollection('journal');
-allJournal.sort(sortByDate);
+const allPosts = await getCollection('journal');
+const formattedAllPosts = formatPosts(allPosts, {});
-const uniqueTags = [...new Set(allJournal.map((entry) => entry.data.tags).flat())];
+const uniqueTags = [...new Set(formattedAllPosts.map((entry) => entry.data.tags).flat())];
uniqueTags.sort((a, b) => a.localeCompare(b));
const title = 'Journal';
@@ -33,5 +33,5 @@ const description = '…';
-
+
diff --git a/src/pages/tag.astro b/src/pages/tag.astro
index 54042a2..920bce5 100644
--- a/src/pages/tag.astro
+++ b/src/pages/tag.astro
@@ -1,15 +1,11 @@
---
import { getCollection } from 'astro:content';
-import { sortByDate } from '../utils';
-
import GridLayout from '../layouts/GridLayout.astro';
import PageTitle from '../components/PageTitle.astro';
-import { Tag } from '../components';
+import { Tag as TagComponent } from '../components';
const allJournal = await getCollection('journal');
-allJournal.sort(sortByDate);
-
const uniqueTags = [...new Set(allJournal.map((entry) => entry.data.tags).flat())];
uniqueTags.sort((a, b) => a.localeCompare(b));
@@ -27,6 +23,6 @@ const description = '…';
>
Tags
diff --git a/src/pages/tag/[tag].astro b/src/pages/tag/[tag].astro
index d57b795..1d5683f 100644
--- a/src/pages/tag/[tag].astro
+++ b/src/pages/tag/[tag].astro
@@ -1,7 +1,7 @@
---
import { getCollection } from 'astro:content';
-import { sortByDate } from '../../utils';
+import { formatPosts } from '../../utils';
import GridLayout from '../../layouts/GridLayout.astro';
import PageTitle from '../../components/PageTitle.astro';
@@ -16,13 +16,15 @@ interface Props {
export async function getStaticPaths() {
const journalEntries = await getCollection('journal');
- journalEntries.sort(sortByDate);
+ const formattedJournalEntries = formatPosts(journalEntries, {});
- const uniqueTags = [...new Set(journalEntries.map((entry) => entry.data.tags).flat())];
+ const uniqueTags = [...new Set(formattedJournalEntries.map((entry) => entry.data.tags).flat())];
uniqueTags.sort((a, b) => a.localeCompare(b));
return uniqueTags.map((tag) => {
- const filteredEntries = journalEntries.filter((entry) => entry.data.tags.includes(tag));
+ const filteredEntries = formattedJournalEntries.filter((entry) =>
+ entry.data.tags.includes(tag)
+ );
return {
params: { tag },
props: {
diff --git a/src/schema/journal.ts b/src/schema/journal.ts
index 6f94c57..8f1d6d2 100644
--- a/src/schema/journal.ts
+++ b/src/schema/journal.ts
@@ -3,6 +3,7 @@ import { defineCollection, z } from 'astro:content';
export const journal = defineCollection({
schema: z.object({
title: z.string(),
+ draft: z.boolean().optional().default(false),
featured: z.boolean().optional(),
author: z.string().default('Stefan Imhoff'),
date: z.date(),