From 3d4b23c53f203249b1d0c8e51d668f7b86dbaa6c Mon Sep 17 00:00:00 2001 From: rtkay123 Date: Sun, 22 Feb 2026 15:18:34 +0200 Subject: feat: prefill welcome step --- website/src/routes/+page.svelte | 4 +- website/src/routes/login/+page.svelte | 4 +- website/src/routes/welcome/+page.server.ts | 81 ++++++++++++++++++------------ website/src/routes/welcome/+page.svelte | 9 ++-- 4 files changed, 59 insertions(+), 39 deletions(-) (limited to 'website/src/routes') diff --git a/website/src/routes/+page.svelte b/website/src/routes/+page.svelte index a9c8dd0..a69efc4 100644 --- a/website/src/routes/+page.svelte +++ b/website/src/routes/+page.svelte @@ -1,6 +1,6 @@ +

Welcome to SvelteKit

Visit svelte.dev/docs/kit to read the documentation

diff --git a/website/src/routes/login/+page.svelte b/website/src/routes/login/+page.svelte index 1226799..6e6325d 100644 --- a/website/src/routes/login/+page.svelte +++ b/website/src/routes/login/+page.svelte @@ -7,7 +7,6 @@ url.searchParams.set('provider', provider); return url.toString(); }; -
diff --git a/website/src/routes/welcome/+page.server.ts b/website/src/routes/welcome/+page.server.ts index 503f361..5a6e024 100644 --- a/website/src/routes/welcome/+page.server.ts +++ b/website/src/routes/welcome/+page.server.ts @@ -3,36 +3,53 @@ import type { Actions, PageServerLoad } from './$types'; import { profileSchema } from '$lib/schemas/profile'; export const actions: Actions = { - default: async ({ request, fetch }) => { - console.log("hello"); - const formData = await request.formData(); - const data = Object.fromEntries(formData); - - // 1. Zod Validation - const result = profileSchema.safeParse(data); - - if (!result.success) { - return fail(400, { - errors: result.error.flatten().fieldErrors, - data: data as Record - }); - } - - // 2. Example: Check availability against your backend - // Replace this with your actual backend URL - const response = await fetch(`/api/check-username?u=${result.data.username}`); - const { available } = await response.json(); - - if (!available) { - return fail(400, { - errors: { username: ["This username is already taken"] }, - data: data as Record - }); - } - - // 3. Success: Send to backend to create profile - // await fetch('...', { method: 'POST', body: JSON.stringify(result.data) }); - - throw redirect(303, '/dashboard'); - } + default: async ({ request, fetch }) => { + console.log('hello'); + const formData = await request.formData(); + const data = Object.fromEntries(formData); + + const result = profileSchema.safeParse(data); + + if (!result.success) { + return fail(400, { + errors: result.error.flatten().fieldErrors, + data: data as Record, + }); + } + + const response = await fetch(`/api/check-username?u=${result.data.username}`); + const { available } = await response.json(); + + if (!available) { + return fail(400, { + errors: { username: ['This username is already taken'] }, + data: data as Record, + }); + } + + // 3. Success: Send to backend to create profile + // await fetch('...', { method: 'POST', body: JSON.stringify(result.data) }); + + throw redirect(303, '/dashboard'); + }, +}; + +export const load = async ({ fetch, request }) => { + const res = await fetch('http://localhost:2210/me', { + headers: { + cookie: request.headers.get('cookie') || '', + }, + }); + + if (res.status === 401) throw redirect(302, '/login'); + + const userData = await res.json(); + + // if (userData.is_onboarded) { + // throw redirect(302, '/dashboard'); + // } + // + return { + user: userData, + }; }; diff --git a/website/src/routes/welcome/+page.svelte b/website/src/routes/welcome/+page.svelte index 863b69f..ade0837 100644 --- a/website/src/routes/welcome/+page.svelte +++ b/website/src/routes/welcome/+page.svelte @@ -1,6 +1,6 @@ @@ -128,7 +131,7 @@ id="email" name="email" type="email" - value="email@domain.com" + value={data.user.email} readonly tabindex="-1" class="flex-1 cursor-not-allowed border-none bg-transparent py-2.5 pr-4 pl-3 text-sm text-gray-500 outline-none focus:ring-0 md:text-base" -- cgit v1.2.3