From a28ee8b2f07f7937deaf440cc9763dd7a7b2ff21 Mon Sep 17 00:00:00 2001 From: Joseph Montanaro Date: Sun, 27 Aug 2023 08:52:30 -0700 Subject: [PATCH] get footer links working and get rid of unnecessary json route --- src/routes/+page.js | 7 +++---- src/routes/+page.server.js | 11 +++++++++++ src/routes/[slug]/+page.js | 7 +++++-- src/routes/[slug]/+page.server.js | 10 ++++++++++ src/routes/_posts/all.js | 1 + src/routes/latest/+server.js | 7 ------- 6 files changed, 30 insertions(+), 13 deletions(-) create mode 100644 src/routes/+page.server.js create mode 100644 src/routes/[slug]/+page.server.js delete mode 100644 src/routes/latest/+server.js diff --git a/src/routes/+page.js b/src/routes/+page.js index 952648c..baa10ca 100644 --- a/src/routes/+page.js +++ b/src/routes/+page.js @@ -1,7 +1,6 @@ -export async function load({ fetch }) { - const resp = await fetch('/latest'); - const postMeta = await resp.json(); - const post = await import(`./_posts/${postMeta.slug}.svx`); +export async function load({ data }) { + let post = await import(`./_posts/${data.slug}.svx`); + post.metadata.next = data.next; return { post: post.default, } diff --git a/src/routes/+page.server.js b/src/routes/+page.server.js new file mode 100644 index 0000000..7eaf277 --- /dev/null +++ b/src/routes/+page.server.js @@ -0,0 +1,11 @@ +import { postData, siblingPosts } from './_posts/all.js'; + + +// this is in a "servserside" loader so that we don't end up embedding the metadata +// for every post into the final page +export function load() { + return { + slug: postData[0].slug, + next: postData[1].slug, + }; +} \ No newline at end of file diff --git a/src/routes/[slug]/+page.js b/src/routes/[slug]/+page.js index 5e3a80f..23528ff 100644 --- a/src/routes/[slug]/+page.js +++ b/src/routes/[slug]/+page.js @@ -1,14 +1,17 @@ import { error } from '@sveltejs/kit'; -export async function load({ url, params }) { +export async function load({ url, params, data }) { try { let post = await import(`../_posts/${params.slug}.svx`); + post.metadata.prev = data.prev; + post.metadata.next = data.next; return { post: post.default, } } catch (err) { - throw error(404, `Not found: ${url.pathname}`); + // throw error(404, `Not found: ${url.pathname}`); + throw err; } } diff --git a/src/routes/[slug]/+page.server.js b/src/routes/[slug]/+page.server.js new file mode 100644 index 0000000..90ef6cb --- /dev/null +++ b/src/routes/[slug]/+page.server.js @@ -0,0 +1,10 @@ +import { postData } from '../_posts/all.js'; + + +export function load({ params }) { + const i = postData.findIndex(p => p.slug === params.slug); + return { + prev: i > 0 ? postData[i - 1].slug : null, + next: i < postData.length - 1 ? postData[i + 1].slug : null, + }; +} \ No newline at end of file diff --git a/src/routes/_posts/all.js b/src/routes/_posts/all.js index 761b29d..4678683 100644 --- a/src/routes/_posts/all.js +++ b/src/routes/_posts/all.js @@ -1,3 +1,4 @@ +import { writable } from 'svelte/store'; import { dev } from '$app/environment'; const posts = import.meta.globEager('./*.svx'); diff --git a/src/routes/latest/+server.js b/src/routes/latest/+server.js deleted file mode 100644 index 57ea272..0000000 --- a/src/routes/latest/+server.js +++ /dev/null @@ -1,7 +0,0 @@ -import { json } from '@sveltejs/kit'; -import { postData } from '../_posts/all.js'; - - -export async function GET() { - return json(postData[0]); -}