From 8527e7fb8911fc6fe7362cce39eaa544ce7f6e5d Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Fri, 9 Dec 2022 23:06:15 +0000 Subject: [PATCH] feat: add pagination to the daily posts archive --- website/src/pages/archive/[...page].astro | 39 +++++++++++++++++++++++ website/src/pages/archive/[...slug].astro | 28 ---------------- website/src/pages/archive/index.astro | 28 ---------------- 3 files changed, 39 insertions(+), 56 deletions(-) create mode 100644 website/src/pages/archive/[...page].astro delete mode 100644 website/src/pages/archive/[...slug].astro delete mode 100644 website/src/pages/archive/index.astro diff --git a/website/src/pages/archive/[...page].astro b/website/src/pages/archive/[...page].astro new file mode 100644 index 00000000..142f9c5a --- /dev/null +++ b/website/src/pages/archive/[...page].astro @@ -0,0 +1,39 @@ +--- +import DailyEmailForm from '../../components/DailyEmailForm.astro' +import Layout from '../../layouts/DailyEmailLayout.astro' + +export async function getStaticPaths({ paginate }) { + const emails = await Astro.glob('../../daily-emails/*.md') + const sortedEmails = emails + .sort((a, b) => + new Date(b.frontmatter.pubDate).valueOf() - + new Date(a.frontmatter.pubDate).valueOf() + ) + + return paginate(sortedEmails, { pageSize: 20 }) +} + +const { page } = Astro.props; +--- + + + + + + diff --git a/website/src/pages/archive/[...slug].astro b/website/src/pages/archive/[...slug].astro deleted file mode 100644 index 73bc6b30..00000000 --- a/website/src/pages/archive/[...slug].astro +++ /dev/null @@ -1,28 +0,0 @@ ---- -import DailyEmailForm from '../../components/DailyEmailForm.astro' -import Layout from '../../layouts/DailyEmailLayout.astro' - -export async function getStaticPaths() { - const emails = await Astro.glob('../../daily-emails/*.md') - - return emails.map(email => { - return { - params: { - slug: email.frontmatter.permalink - .replace('archive/', '') - .replace('\n', ''), - }, - props: { - email, - } - } - }) -} - -const { Content } = Astro.props.email -const { title } = Astro.props.email.frontmatter ---- - - - - diff --git a/website/src/pages/archive/index.astro b/website/src/pages/archive/index.astro deleted file mode 100644 index e0041d95..00000000 --- a/website/src/pages/archive/index.astro +++ /dev/null @@ -1,28 +0,0 @@ ---- -import PageLayout from '../../layouts/PageLayout.astro' - -const emails = await Astro.glob('../../daily-emails/*.md'); - -const sortedEmails = emails - .sort((a, b) => - new Date(b.frontmatter.pubDate).valueOf() - - new Date(a.frontmatter.pubDate).valueOf() - ) ---- - - - -