From d2b1a6553b8e90e697c96cfc94b0cfd1bf24870f Mon Sep 17 00:00:00 2001 From: dumbmoron Date: Tue, 17 Sep 2024 21:49:23 +0000 Subject: [PATCH] web/about: fix switching between pages --- web/src/routes/about/[page]/+page.svelte | 12 ++++------ web/src/routes/about/[page]/+page.ts | 29 ++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 8 deletions(-) create mode 100644 web/src/routes/about/[page]/+page.ts diff --git a/web/src/routes/about/[page]/+page.svelte b/web/src/routes/about/[page]/+page.svelte index 01b94fe0..68bad426 100644 --- a/web/src/routes/about/[page]/+page.svelte +++ b/web/src/routes/about/[page]/+page.svelte @@ -1,10 +1,6 @@ - -{#await component then component} - -{/await} + diff --git a/web/src/routes/about/[page]/+page.ts b/web/src/routes/about/[page]/+page.ts new file mode 100644 index 00000000..be5c7a33 --- /dev/null +++ b/web/src/routes/about/[page]/+page.ts @@ -0,0 +1,29 @@ +import type { ComponentType, SvelteComponent } from 'svelte'; +import { get } from 'svelte/store'; +import { error } from '@sveltejs/kit'; + +import type { PageLoad } from './$types'; + +import locale from '$lib/i18n/locale'; +import type { DefaultImport } from '$lib/types/generic'; +import { defaultLocale } from '$lib/i18n/translations'; + +const pages = import.meta.glob('$i18n/*/about/*.md'); + +export const load: PageLoad = async ({ params }) => { + const getPage = (locale: string) => Object.keys(pages).find( + file => file.endsWith(`${locale}/about/${params.page}.md`) + ); + + const componentPath = getPage(get(locale)) || getPage(defaultLocale); + if (componentPath) { + type Component = ComponentType; + const componentImport = pages[componentPath] as DefaultImport; + + return { component: (await componentImport()).default } + } + + error(404, 'Not found'); +}; + +export const prerender = true;