diff --git a/src/lib/components/PostsList.svelte b/src/lib/components/PostsList.svelte index 5b69d3a..5ed3a46 100644 --- a/src/lib/components/PostsList.svelte +++ b/src/lib/components/PostsList.svelte @@ -1,5 +1,5 @@ -
- + + Posts + + + +
+

Posts

+ +
+ +
diff --git a/src/routes/posts/[slug]/+page.server.ts b/src/routes/posts/[slug]/+page.server.ts index 7d8066c..81e2ccd 100644 --- a/src/routes/posts/[slug]/+page.server.ts +++ b/src/routes/posts/[slug]/+page.server.ts @@ -1,15 +1,17 @@ +import { error } from '@sveltejs/kit'; import type { PageServerLoad } from './$types'; import type { MdBody } from '../../api/content/types'; export const load = (async ({ parent, params, fetch }) => { const { posts } = await parent(); - - // find index of file that matches the slug const postId = posts.findIndex((x) => x.slug === params.slug); - const res = await fetch(`/api/content/${postId}`); + const response = await fetch(`/api/content/${postId}`); + if (!response.ok) { + throw error(400, 'error loading data from endpoint'); + } return { - postBody: (await res.json()) as MdBody + postBody: (await response.json()) as MdBody }; }) satisfies PageServerLoad; diff --git a/src/routes/posts/[slug]/+page.svelte b/src/routes/posts/[slug]/+page.svelte index f01a134..55987b7 100644 --- a/src/routes/posts/[slug]/+page.svelte +++ b/src/routes/posts/[slug]/+page.svelte @@ -1,8 +1,41 @@ -
- {@html data.postBody.html} -
+ + Posts | {meta.title} + + + +
+
+

{meta.title}

+ +
+

{meta.date}

+ {meta.category} +
+ + {#if meta.tags.length} +
    + {#each meta.tags as tag} +
  • + +
  • + {/each} +
+ {/if} +
+ + + {meta.description} + + +
+ {@html html} +
+
diff --git a/src/routes/posts/categories/+page.server.ts b/src/routes/posts/categories/+page.server.ts index b218e59..f5e6f82 100644 --- a/src/routes/posts/categories/+page.server.ts +++ b/src/routes/posts/categories/+page.server.ts @@ -1,8 +1,13 @@ +import { error } from '@sveltejs/kit'; import type { PageServerLoad } from './$types'; import type { MdMeta } from '../../api/content/types'; export const load = (async ({ fetch }) => { const response = await fetch('/api/content'); + if (!response.ok) { + throw error(400, 'error loading data from endpoint'); + } + const result = (await response.json()) as MdMeta[]; const allCategories = result.map((x) => x.category); diff --git a/src/routes/posts/categories/+page.svelte b/src/routes/posts/categories/+page.svelte index d26e05f..717c87e 100644 --- a/src/routes/posts/categories/+page.svelte +++ b/src/routes/posts/categories/+page.svelte @@ -4,6 +4,11 @@ export let data: PageServerData; + + Posts | Categories + + +
{#each data.categories as category} { const response = await fetch('/api/content'); + if (!response.ok) { + throw error(400, 'error loading data from endpoint'); + } + const result = (await response.json()) as MdMeta[]; return { - posts: result.filter((x) => x.category === params.slug) + posts: result.filter((x) => x.category === params.slug), + category: params.slug }; }) satisfies PageServerLoad; diff --git a/src/routes/posts/categories/[slug]/+page.svelte b/src/routes/posts/categories/[slug]/+page.svelte index 2da62dd..a3f0933 100644 --- a/src/routes/posts/categories/[slug]/+page.svelte +++ b/src/routes/posts/categories/[slug]/+page.svelte @@ -5,6 +5,11 @@ export let data: PageServerData; + + Posts in {data.category} + + +
diff --git a/src/routes/posts/tags/+page.server.ts b/src/routes/posts/tags/+page.server.ts index 083ce00..13b67b9 100644 --- a/src/routes/posts/tags/+page.server.ts +++ b/src/routes/posts/tags/+page.server.ts @@ -1,8 +1,13 @@ +import { error } from '@sveltejs/kit'; import type { PageServerLoad } from './$types'; import type { MdMeta } from '../../api/content/types'; export const load = (async ({ fetch }) => { const response = await fetch('/api/content'); + if (!response.ok) { + throw error(400, 'error loading data from endpoint'); + } + const result = (await response.json()) as MdMeta[]; const allTags = result.map((x) => x.tags).flat(); diff --git a/src/routes/posts/tags/+page.svelte b/src/routes/posts/tags/+page.svelte index da21167..232240e 100644 --- a/src/routes/posts/tags/+page.svelte +++ b/src/routes/posts/tags/+page.svelte @@ -4,6 +4,11 @@ export let data: PageServerData; + + Posts | Tags + + +