From bef3da2a567e3804e12355d9c3d5c09439dbe2ea Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Thu, 17 Jul 2025 23:42:55 +0200 Subject: Humble beginnings Redirect to login if not logged in, on login session cookie is set and projects or reviews are listed. --- client/src/routes/(app)/+error.svelte | 5 +++++ client/src/routes/(app)/+layout.svelte | 12 +++++++++++ client/src/routes/(app)/+layout.ts | 6 ++++++ client/src/routes/(app)/+page.svelte | 25 ++++++++++++++++++++++ client/src/routes/(app)/+page.ts | 38 ++++++++++++++++++++++++++++++++++ 5 files changed, 86 insertions(+) create mode 100644 client/src/routes/(app)/+error.svelte create mode 100644 client/src/routes/(app)/+layout.svelte create mode 100644 client/src/routes/(app)/+layout.ts create mode 100644 client/src/routes/(app)/+page.svelte create mode 100644 client/src/routes/(app)/+page.ts (limited to 'client/src/routes/(app)') diff --git a/client/src/routes/(app)/+error.svelte b/client/src/routes/(app)/+error.svelte new file mode 100644 index 0000000..63f3d66 --- /dev/null +++ b/client/src/routes/(app)/+error.svelte @@ -0,0 +1,5 @@ + + +

{page.status} {page.error?.message}

diff --git a/client/src/routes/(app)/+layout.svelte b/client/src/routes/(app)/+layout.svelte new file mode 100644 index 0000000..47dc736 --- /dev/null +++ b/client/src/routes/(app)/+layout.svelte @@ -0,0 +1,12 @@ + + +

eyeballs

+ + + +{@render children()} diff --git a/client/src/routes/(app)/+layout.ts b/client/src/routes/(app)/+layout.ts new file mode 100644 index 0000000..08366b0 --- /dev/null +++ b/client/src/routes/(app)/+layout.ts @@ -0,0 +1,6 @@ +import type { LayoutLoad } from './$types'; + +export const load: LayoutLoad = () => { + // TODO: Decrypt sessioncookie if set, if not set, redirect to /login + return {}; +}; diff --git a/client/src/routes/(app)/+page.svelte b/client/src/routes/(app)/+page.svelte new file mode 100644 index 0000000..945945e --- /dev/null +++ b/client/src/routes/(app)/+page.svelte @@ -0,0 +1,25 @@ + + +

Reviews

+ +{#if data.reviews === undefined} + Select active project + + + +{:else} + + +{/if} diff --git a/client/src/routes/(app)/+page.ts b/client/src/routes/(app)/+page.ts new file mode 100644 index 0000000..b6b923e --- /dev/null +++ b/client/src/routes/(app)/+page.ts @@ -0,0 +1,38 @@ +import { client } from '$lib/fetch-client'; +import { get_config } from '$lib/config'; +import type { PageLoad } from './$types'; + +function maybeInt(input: string | null, fallback: number): number { + if (input === null) return fallback; + try { + return parseInt(input); + } catch { + return fallback; + } +} + +export const load: PageLoad = async ({ fetch, url }) => { + const config = await get_config(); + if (config.active_project === undefined) { + const projects = await client.GET('/projects', { + params: { query: { offset: maybeInt(url.searchParams.get('projects_offset'), 0) } }, + fetch + }); + return { + projects: projects.data!!, + reviews: undefined + }; + } else { + const reviews = await client.GET('/project/{projectid}/reviews', { + params: { + path: { projectid: config.active_project }, + query: { offset: maybeInt(url.searchParams.get('reviews_offset'), 0) } + }, + fetch + }); + return { + projects: undefined, + reviews: reviews.data + }; + } +}; -- cgit v1.2.3-70-g09d2