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