From 5c635662f41bc00cc7acb303bcb6dd4a28e9cbfb Mon Sep 17 00:00:00 2001 From: DavePk04 <Dave.Pikop.Pokam@ulb.be> Date: Sat, 29 Mar 2025 13:32:42 +0100 Subject: [PATCH 1/4] Fix URL transition issue on step 8 towards /studies/study_id --- .../routes/register/[[studyId]]/+page.server.ts | 7 ++++--- .../src/routes/register/[[studyId]]/+page.svelte | 15 ++++++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/frontend/src/routes/register/[[studyId]]/+page.server.ts b/frontend/src/routes/register/[[studyId]]/+page.server.ts index 1e911c77..3f3247d7 100644 --- a/frontend/src/routes/register/[[studyId]]/+page.server.ts +++ b/frontend/src/routes/register/[[studyId]]/+page.server.ts @@ -55,7 +55,8 @@ export const actions: Actions = { return redirect(303, `/register/${studyId}`); }, - data: async ({ request, fetch, locals }) => { + data: async ({ request, fetch, locals, params }) => { + const studyId = params.studyId; if (!locals.user) { return { message: 'Unauthorized' }; } @@ -95,7 +96,7 @@ export const actions: Actions = { }); if (!response) return { message: 'Unknown error occurred' }; - redirect(303, '/register'); + redirect(303, `/register/${studyId}`); } else if (locals.user.type == 1) { if (!homeLanguage || !birthyear || !gender || !bio) { return { message: 'Invalid request' }; @@ -116,7 +117,7 @@ export const actions: Actions = { bio }); if (!response) return { message: 'Unknown error occurred' }; - redirect(303, '/register'); + redirect(303, `/register/${studyId}`); } } }; diff --git a/frontend/src/routes/register/[[studyId]]/+page.svelte b/frontend/src/routes/register/[[studyId]]/+page.svelte index 84b646af..a8280e52 100644 --- a/frontend/src/routes/register/[[studyId]]/+page.svelte +++ b/frontend/src/routes/register/[[studyId]]/+page.svelte @@ -615,17 +615,22 @@ <p class="text-center"> {@html $t('register.continue')} </p> - <button class="button mt-4 w-full" onclick={() => (current_step = 6)}> + <button class="button mt-4 w-full" onclick={() => (current_step = 8)}> {$t('register.continueButton')} </button> <button class="button mt-4 w-full" onclick={() => (document.location.href = '/')}> {$t('register.startFastButton')} </button> </div> - {:else if current_step == 8} - {#if user} - <Typingtest onFinish={() => current_step++} {user} /> - {/if} + {:else if current_step == 8} + <div class="text-center"> + <p class="text-center"> + {@html $t('register.start')} + </p> + <button class="button mt-4 m-auto" onclick={() => (document.location.href = `/studies/${study?.id}`)}> + {$t('register.continueButton')} + </button> + </div> {:else if current_step == 9} <div class="text-center"> <p class="text-center"> -- GitLab From 7662de2639bad31fd774a42a96c0510a6f635fed Mon Sep 17 00:00:00 2001 From: DavePk04 <Dave.Pikop.Pokam@ulb.be> Date: Sat, 29 Mar 2025 13:34:37 +0100 Subject: [PATCH 2/4] fix linting --- frontend/src/routes/register/[[studyId]]/+page.svelte | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/frontend/src/routes/register/[[studyId]]/+page.svelte b/frontend/src/routes/register/[[studyId]]/+page.svelte index a8280e52..80c80753 100644 --- a/frontend/src/routes/register/[[studyId]]/+page.svelte +++ b/frontend/src/routes/register/[[studyId]]/+page.svelte @@ -622,12 +622,15 @@ {$t('register.startFastButton')} </button> </div> - {:else if current_step == 8} + {:else if current_step == 8} <div class="text-center"> <p class="text-center"> {@html $t('register.start')} </p> - <button class="button mt-4 m-auto" onclick={() => (document.location.href = `/studies/${study?.id}`)}> + <button + class="button mt-4 m-auto" + onclick={() => (document.location.href = `/studies/${study?.id}`)} + > {$t('register.continueButton')} </button> </div> -- GitLab From 8c059bbd6580e4de18900f974986f1c49c598b6d Mon Sep 17 00:00:00 2001 From: DavePk04 <Dave.Pikop.Pokam@ulb.be> Date: Sat, 29 Mar 2025 15:11:57 +0100 Subject: [PATCH 3/4] fixed dashboad page loading issue --- .../register/[[studyId]]/+page.server.ts | 231 +++++++++--------- 1 file changed, 115 insertions(+), 116 deletions(-) diff --git a/frontend/src/routes/register/[[studyId]]/+page.server.ts b/frontend/src/routes/register/[[studyId]]/+page.server.ts index 3f3247d7..3aea7879 100644 --- a/frontend/src/routes/register/[[studyId]]/+page.server.ts +++ b/frontend/src/routes/register/[[studyId]]/+page.server.ts @@ -5,119 +5,118 @@ import { validateEmail, validatePassword, validateUsername } from '$lib/utils/se import { redirect, type Actions } from '@sveltejs/kit'; export const actions: Actions = { - register: async ({ request, fetch, params }) => { - const formData = await request.formData(); - const studyId = params.studyId; - if (!studyId) return { message: 'Invalid request' }; - - const email = formData.get('email'); - const nickname = formData.get('nickname'); - const password = formData.get('password'); - const confirmPassword = formData.get('confirmPassword'); - const role = formData.get('role'); - - if (!email || !nickname || !password || !confirmPassword) { - return { message: 'Invalid request' }; - } - - if (!validateEmail(email)) return { message: 'Invalid email' }; - if (!validateUsername(nickname)) return { message: 'Invalid username' }; - if (!validatePassword(password)) return { message: 'Invalid password' }; - - if (password !== confirmPassword) return { message: 'Passwords do not match' }; - - const is_tutor = Number(role) === 1; - - let response = await fetch(`/api/auth/register`, { - headers: { - 'Content-Type': 'application/json' - }, - method: 'POST', - body: JSON.stringify({ email, nickname, password, is_tutor }) - }); - - if (response.status === 400) return { message: 'User already exists' }; - if (response.status === 401) return { message: 'Failed to create user' }; - if (response.status === 422) return { message: 'Invalid request' }; - if (!response.ok) return { message: 'Unknown error occurred' }; - - response = await fetch(`/api/auth/login`, { - headers: { - 'Content-Type': 'application/json' - }, - method: 'POST', - body: JSON.stringify({ email, password }) - }); - - if (response.status === 401) return { message: 'Incorrect email or password' }; - if (response.status === 422) return { message: 'Invalid request' }; - if (!response.ok) return { message: 'Unknown error occurred' }; - - return redirect(303, `/register/${studyId}`); - }, - data: async ({ request, fetch, locals, params }) => { - const studyId = params.studyId; - if (!locals.user) { - return { message: 'Unauthorized' }; - } - - const formData = await request.formData(); - - const homeLanguage = formData.get('homeLanguage'); - const targetLanguage = formData.get('targetLanguage'); - const birthyear = formData.get('birthyear'); - const gender = formData.get('gender'); - const study = formData.get('study'); - const bio = formData.get('bio'); - let my_tutor = formData.get('myTutor'); - - if (locals.user.type == 2) { - if (!homeLanguage || !targetLanguage || !birthyear || !gender) { - return { message: 'Invalid request' }; - } - // Fixme: I struggled to retrieve the my_tutor's value in the form (temporary fix) - if (!my_tutor || (my_tutor as string).trim() === '') { - my_tutor = ''; - } - - let birthdate; - try { - birthdate = formatToUTCDate(new Date(parseInt(birthyear.toString()), 0, 30)); - } catch (e) { - return { message: 'Invalid request' }; - } - - const response = await patchUserAPI(fetch, locals.user.id, { - home_language: homeLanguage, - target_language: targetLanguage, - gender, - birthdate, - my_tutor: my_tutor - }); - if (!response) return { message: 'Unknown error occurred' }; - - redirect(303, `/register/${studyId}`); - } else if (locals.user.type == 1) { - if (!homeLanguage || !birthyear || !gender || !bio) { - return { message: 'Invalid request' }; - } - - let birthdate; - try { - birthdate = formatToUTCDate(new Date(parseInt(birthyear.toString()), 0, 30)); - } catch (e) { - return { message: 'Invalid request' }; - } - - let response = await patchUserAPI(fetch, locals.user.id, { - home_language: homeLanguage, - target_language: targetLanguage, - gender, - birthdate, - bio - }); - if (!response) return { message: 'Unknown error occurred' }; - redirect(303, `/register/${studyId}`); - } - } -}; + register: async ({ request, fetch, params }) => { + const formData = await request.formData(); + const studyId = params.studyId; + if (!studyId) return { message: 'Invalid request' }; + + const email = formData.get('email'); + const nickname = formData.get('nickname'); + const password = formData.get('password'); + const confirmPassword = formData.get('confirmPassword'); + const role = formData.get('role'); + + if (!email || !nickname || !password || !confirmPassword) { + return { message: 'Invalid request' }; + } + + if (!validateEmail(email)) return { message: 'Invalid email' }; + if (!validateUsername(nickname)) return { message: 'Invalid username' }; + if (!validatePassword(password)) return { message: 'Invalid password' }; + + if (password !== confirmPassword) return { message: 'Passwords do not match' }; + + const is_tutor = Number(role) === 1; + + let response = await fetch(`/api/auth/register`, { + headers: { + 'Content-Type': 'application/json' + }, + method: 'POST', + body: JSON.stringify({ email, nickname, password, is_tutor }) + }); + + if (response.status === 400) return { message: 'User already exists' }; + if (response.status === 401) return { message: 'Failed to create user' }; + if (response.status === 422) return { message: 'Invalid request' }; + if (!response.ok) return { message: 'Unknown error occurred' }; + + response = await fetch(`/api/auth/login`, { + headers: { + 'Content-Type': 'application/json' + }, + method: 'POST', + body: JSON.stringify({ email, password }) + }); + + if (response.status === 401) return { message: 'Incorrect email or password' }; + if (response.status === 422) return { message: 'Invalid request' }; + if (!response.ok) return { message: 'Unknown error occurred' }; + + return redirect(303, `/register/${studyId}`); + }, + data: async ({ request, fetch, locals}) => { + if (!locals.user) { + return { message: 'Unauthorized' }; + } + + const formData = await request.formData(); + + const homeLanguage = formData.get('homeLanguage'); + const targetLanguage = formData.get('targetLanguage'); + const birthyear = formData.get('birthyear'); + const gender = formData.get('gender'); + const study = formData.get('study'); + const bio = formData.get('bio'); + let my_tutor = formData.get('myTutor'); + + if (locals.user.type == 2) { + if (!homeLanguage || !targetLanguage || !birthyear || !gender) { + return { message: 'Invalid request' }; + } + // Fixme: I struggled to retrieve the my_tutor's value in the form (temporary fix) + if (!my_tutor || (my_tutor as string).trim() === '') { + my_tutor = ''; + } + + let birthdate; + try { + birthdate = formatToUTCDate(new Date(parseInt(birthyear.toString()), 0, 30)); + } catch (e) { + return { message: 'Invalid request' }; + } + + const response = await patchUserAPI(fetch, locals.user.id, { + home_language: homeLanguage, + target_language: targetLanguage, + gender, + birthdate, + my_tutor: my_tutor + }); + if (!response) return { message: 'Unknown error occurred' }; + + redirect(303, `/register/`); + } else if (locals.user.type == 1) { + if (!homeLanguage || !birthyear || !gender || !bio) { + return { message: 'Invalid request' }; + } + + let birthdate; + try { + birthdate = formatToUTCDate(new Date(parseInt(birthyear.toString()), 0, 30)); + } catch (e) { + return { message: 'Invalid request' }; + } + + let response = await patchUserAPI(fetch, locals.user.id, { + home_language: homeLanguage, + target_language: targetLanguage, + gender, + birthdate, + bio + }); + if (!response) return { message: 'Unknown error occurred' }; + redirect(303, `/register/`); + } + } +}; \ No newline at end of file -- GitLab From 3bf1612a6222d4078ab685f99c31dcdf29f58441 Mon Sep 17 00:00:00 2001 From: DavePk04 <Dave.Pikop.Pokam@ulb.be> Date: Sat, 29 Mar 2025 15:19:04 +0100 Subject: [PATCH 4/4] fix linting --- .../register/[[studyId]]/+page.server.ts | 230 +++++++++--------- 1 file changed, 115 insertions(+), 115 deletions(-) diff --git a/frontend/src/routes/register/[[studyId]]/+page.server.ts b/frontend/src/routes/register/[[studyId]]/+page.server.ts index 3aea7879..1649973a 100644 --- a/frontend/src/routes/register/[[studyId]]/+page.server.ts +++ b/frontend/src/routes/register/[[studyId]]/+page.server.ts @@ -5,118 +5,118 @@ import { validateEmail, validatePassword, validateUsername } from '$lib/utils/se import { redirect, type Actions } from '@sveltejs/kit'; export const actions: Actions = { - register: async ({ request, fetch, params }) => { - const formData = await request.formData(); - const studyId = params.studyId; - if (!studyId) return { message: 'Invalid request' }; - - const email = formData.get('email'); - const nickname = formData.get('nickname'); - const password = formData.get('password'); - const confirmPassword = formData.get('confirmPassword'); - const role = formData.get('role'); - - if (!email || !nickname || !password || !confirmPassword) { - return { message: 'Invalid request' }; - } - - if (!validateEmail(email)) return { message: 'Invalid email' }; - if (!validateUsername(nickname)) return { message: 'Invalid username' }; - if (!validatePassword(password)) return { message: 'Invalid password' }; - - if (password !== confirmPassword) return { message: 'Passwords do not match' }; - - const is_tutor = Number(role) === 1; - - let response = await fetch(`/api/auth/register`, { - headers: { - 'Content-Type': 'application/json' - }, - method: 'POST', - body: JSON.stringify({ email, nickname, password, is_tutor }) - }); - - if (response.status === 400) return { message: 'User already exists' }; - if (response.status === 401) return { message: 'Failed to create user' }; - if (response.status === 422) return { message: 'Invalid request' }; - if (!response.ok) return { message: 'Unknown error occurred' }; - - response = await fetch(`/api/auth/login`, { - headers: { - 'Content-Type': 'application/json' - }, - method: 'POST', - body: JSON.stringify({ email, password }) - }); - - if (response.status === 401) return { message: 'Incorrect email or password' }; - if (response.status === 422) return { message: 'Invalid request' }; - if (!response.ok) return { message: 'Unknown error occurred' }; - - return redirect(303, `/register/${studyId}`); - }, - data: async ({ request, fetch, locals}) => { - if (!locals.user) { - return { message: 'Unauthorized' }; - } - - const formData = await request.formData(); - - const homeLanguage = formData.get('homeLanguage'); - const targetLanguage = formData.get('targetLanguage'); - const birthyear = formData.get('birthyear'); - const gender = formData.get('gender'); - const study = formData.get('study'); - const bio = formData.get('bio'); - let my_tutor = formData.get('myTutor'); - - if (locals.user.type == 2) { - if (!homeLanguage || !targetLanguage || !birthyear || !gender) { - return { message: 'Invalid request' }; - } - // Fixme: I struggled to retrieve the my_tutor's value in the form (temporary fix) - if (!my_tutor || (my_tutor as string).trim() === '') { - my_tutor = ''; - } - - let birthdate; - try { - birthdate = formatToUTCDate(new Date(parseInt(birthyear.toString()), 0, 30)); - } catch (e) { - return { message: 'Invalid request' }; - } - - const response = await patchUserAPI(fetch, locals.user.id, { - home_language: homeLanguage, - target_language: targetLanguage, - gender, - birthdate, - my_tutor: my_tutor - }); - if (!response) return { message: 'Unknown error occurred' }; - - redirect(303, `/register/`); - } else if (locals.user.type == 1) { - if (!homeLanguage || !birthyear || !gender || !bio) { - return { message: 'Invalid request' }; - } - - let birthdate; - try { - birthdate = formatToUTCDate(new Date(parseInt(birthyear.toString()), 0, 30)); - } catch (e) { - return { message: 'Invalid request' }; - } - - let response = await patchUserAPI(fetch, locals.user.id, { - home_language: homeLanguage, - target_language: targetLanguage, - gender, - birthdate, - bio - }); - if (!response) return { message: 'Unknown error occurred' }; - redirect(303, `/register/`); - } - } -}; \ No newline at end of file + register: async ({ request, fetch, params }) => { + const formData = await request.formData(); + const studyId = params.studyId; + if (!studyId) return { message: 'Invalid request' }; + + const email = formData.get('email'); + const nickname = formData.get('nickname'); + const password = formData.get('password'); + const confirmPassword = formData.get('confirmPassword'); + const role = formData.get('role'); + + if (!email || !nickname || !password || !confirmPassword) { + return { message: 'Invalid request' }; + } + + if (!validateEmail(email)) return { message: 'Invalid email' }; + if (!validateUsername(nickname)) return { message: 'Invalid username' }; + if (!validatePassword(password)) return { message: 'Invalid password' }; + + if (password !== confirmPassword) return { message: 'Passwords do not match' }; + + const is_tutor = Number(role) === 1; + + let response = await fetch(`/api/auth/register`, { + headers: { + 'Content-Type': 'application/json' + }, + method: 'POST', + body: JSON.stringify({ email, nickname, password, is_tutor }) + }); + + if (response.status === 400) return { message: 'User already exists' }; + if (response.status === 401) return { message: 'Failed to create user' }; + if (response.status === 422) return { message: 'Invalid request' }; + if (!response.ok) return { message: 'Unknown error occurred' }; + + response = await fetch(`/api/auth/login`, { + headers: { + 'Content-Type': 'application/json' + }, + method: 'POST', + body: JSON.stringify({ email, password }) + }); + + if (response.status === 401) return { message: 'Incorrect email or password' }; + if (response.status === 422) return { message: 'Invalid request' }; + if (!response.ok) return { message: 'Unknown error occurred' }; + + return redirect(303, `/register/${studyId}`); + }, + data: async ({ request, fetch, locals }) => { + if (!locals.user) { + return { message: 'Unauthorized' }; + } + + const formData = await request.formData(); + + const homeLanguage = formData.get('homeLanguage'); + const targetLanguage = formData.get('targetLanguage'); + const birthyear = formData.get('birthyear'); + const gender = formData.get('gender'); + const study = formData.get('study'); + const bio = formData.get('bio'); + let my_tutor = formData.get('myTutor'); + + if (locals.user.type == 2) { + if (!homeLanguage || !targetLanguage || !birthyear || !gender) { + return { message: 'Invalid request' }; + } + // Fixme: I struggled to retrieve the my_tutor's value in the form (temporary fix) + if (!my_tutor || (my_tutor as string).trim() === '') { + my_tutor = ''; + } + + let birthdate; + try { + birthdate = formatToUTCDate(new Date(parseInt(birthyear.toString()), 0, 30)); + } catch (e) { + return { message: 'Invalid request' }; + } + + const response = await patchUserAPI(fetch, locals.user.id, { + home_language: homeLanguage, + target_language: targetLanguage, + gender, + birthdate, + my_tutor: my_tutor + }); + if (!response) return { message: 'Unknown error occurred' }; + + redirect(303, `/register/`); + } else if (locals.user.type == 1) { + if (!homeLanguage || !birthyear || !gender || !bio) { + return { message: 'Invalid request' }; + } + + let birthdate; + try { + birthdate = formatToUTCDate(new Date(parseInt(birthyear.toString()), 0, 30)); + } catch (e) { + return { message: 'Invalid request' }; + } + + let response = await patchUserAPI(fetch, locals.user.id, { + home_language: homeLanguage, + target_language: targetLanguage, + gender, + birthdate, + bio + }); + if (!response) return { message: 'Unknown error occurred' }; + redirect(303, `/register/`); + } + } +}; -- GitLab