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(),