From c60429d88424739f8c0f94d8b1c24671c78bd467 Mon Sep 17 00:00:00 2001 From: Sam Date: Tue, 28 Mar 2023 10:02:20 +0200 Subject: [PATCH] feat: redirect /[username] to /@[username] if no page matches --- .../src/routes/[username]/+page.server.ts | 19 +++++++++++++++++++ frontend/src/routes/[username]/+page.svelte | 1 + 2 files changed, 20 insertions(+) create mode 100644 frontend/src/routes/[username]/+page.server.ts create mode 100644 frontend/src/routes/[username]/+page.svelte diff --git a/frontend/src/routes/[username]/+page.server.ts b/frontend/src/routes/[username]/+page.server.ts new file mode 100644 index 0000000..3794610 --- /dev/null +++ b/frontend/src/routes/[username]/+page.server.ts @@ -0,0 +1,19 @@ +import { ErrorCode, type APIError, type User } from "$lib/api/entities"; +import { apiFetch } from "$lib/api/fetch"; +import { error, redirect } from "@sveltejs/kit"; + +export const load = async ({ params }) => { + try { + const resp = await apiFetch(`/users/${params.username}`, { + method: "GET", + }); + + throw redirect(303, `/@${resp.name}`); + } catch (e) { + if ((e as APIError).code === ErrorCode.UserNotFound) { + throw error(404, (e as APIError).message); + } + + throw e; + } +}; diff --git a/frontend/src/routes/[username]/+page.svelte b/frontend/src/routes/[username]/+page.svelte new file mode 100644 index 0000000..81b0d60 --- /dev/null +++ b/frontend/src/routes/[username]/+page.svelte @@ -0,0 +1 @@ +

Page not found