From c98b641bb167c1a50b9ccdaf03cf97e92ec84a13 Mon Sep 17 00:00:00 2001 From: glazk0 <43091603+glazk0@users.noreply.github.com> Date: Sat, 30 Mar 2024 22:20:19 +0100 Subject: [PATCH 1/3] Added limit notification --- src/routes/(app)/chapters/[chapterId]/groups/+page.server.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(app)/chapters/[chapterId]/groups/+page.server.ts b/src/routes/(app)/chapters/[chapterId]/groups/+page.server.ts index 9a2b524..8a9e115 100644 --- a/src/routes/(app)/chapters/[chapterId]/groups/+page.server.ts +++ b/src/routes/(app)/chapters/[chapterId]/groups/+page.server.ts @@ -78,7 +78,7 @@ export const actions: Actions = { if (res.status === 403) { return { success: false, - message: 'Vous êtes déjà dans un groupe' + message: 'Vous êtes déjà dans un groupe ou le groupe est complet' }; } -- 2.39.5 From 7e2d80f9716c770c2abd5d45594d269a295647c9 Mon Sep 17 00:00:00 2001 From: glazk0 <43091603+glazk0@users.noreply.github.com> Date: Sun, 31 Mar 2024 23:55:56 +0200 Subject: [PATCH 2/3] Added redirectTo --- src/lib/types/database.ts | 1 + src/lib/utils.ts | 11 ++++++++--- src/routes/(app)/+layout.server.ts | 6 ------ src/routes/(app)/+layout.svelte | 2 -- src/routes/(app)/+page.server.ts | 5 +++-- src/routes/(app)/badges/+page.server.ts | 8 +++++--- src/routes/(app)/chapters/+page.server.ts | 7 ++++--- .../chapters/[chapterId]/+page.server.ts | 5 +++-- .../[chapterId]/groups/+page.server.ts | 7 ++++--- .../chapters/[chapterId]/groups/+page.svelte | 19 ++++++++++++++----- .../[chapterId]/groups/new/+page.server.ts | 11 ++++++----- .../[chapterId]/leaderboard/+page.server.ts | 7 ++++--- .../[chapterId]/puzzle/+page.server.ts | 6 ++++-- .../puzzle/[puzzleId]/+page.server.ts | 7 ++++--- src/routes/(app)/groups/+page.svelte | 4 ---- src/routes/(app)/leaderboard/+page.server.ts | 5 +++-- src/routes/(app)/settings/+page.server.ts | 8 +++++--- src/routes/(auth)/+layout.svelte | 7 ------- src/routes/(auth)/login/+page.server.ts | 7 ++++++- src/routes/(auth)/register/+page.server.ts | 9 +++++++-- src/routes/(auth)/register/+page.svelte | 1 - src/routes/+layout.svelte | 3 +++ 22 files changed, 84 insertions(+), 62 deletions(-) delete mode 100644 src/routes/(app)/+layout.server.ts delete mode 100644 src/routes/(app)/groups/+page.svelte delete mode 100644 src/routes/(auth)/+layout.svelte diff --git a/src/lib/types/database.ts b/src/lib/types/database.ts index d90eeb3..479e191 100644 --- a/src/lib/types/database.ts +++ b/src/lib/types/database.ts @@ -29,6 +29,7 @@ export interface Completion { export interface Group { id: number; name: string; + playerCount: number; chapter?: number; puzzle?: number; } diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 230a1fb..210168d 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -1,12 +1,17 @@ -import { type ClassValue, clsx } from "clsx"; -import { twMerge } from "tailwind-merge"; +import { clsx, type ClassValue } from "clsx"; import { cubicOut } from "svelte/easing"; import type { TransitionConfig } from "svelte/transition"; +import { twMerge } from "tailwind-merge"; export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)); } +export const handleRedirect = (path: string, url: URL) => { + const redirectTo = url.pathname + url.search; + return `/${path}?redirectTo=${encodeURIComponent(redirectTo)}`; +} + type FlyAndScaleParams = { y?: number; x?: number; @@ -59,4 +64,4 @@ export const flyAndScale = ( }, easing: cubicOut }; -}; \ No newline at end of file +}; diff --git a/src/routes/(app)/+layout.server.ts b/src/routes/(app)/+layout.server.ts deleted file mode 100644 index b47fd2c..0000000 --- a/src/routes/(app)/+layout.server.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { redirect, type ServerLoad } from '@sveltejs/kit'; - -export const load: ServerLoad = async ({ parent }) => { - const { user } = await parent(); - if (!user) redirect(302, '/login'); -}; diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte index f7c759e..686bac7 100644 --- a/src/routes/(app)/+layout.svelte +++ b/src/routes/(app)/+layout.svelte @@ -2,7 +2,6 @@ import { navigating } from '$app/stores'; import { Loader, Navbar, Sidenav } from '$lib/components/layout'; - import { Toaster } from '$lib/components/ui/sonner'; {#if $navigating} @@ -18,7 +17,6 @@ class="flex w-full flex-1 transform flex-col overflow-y-auto p-4 duration-300 ease-in-out" > - diff --git a/src/routes/(app)/+page.server.ts b/src/routes/(app)/+page.server.ts index aeaef58..bbb84fd 100644 --- a/src/routes/(app)/+page.server.ts +++ b/src/routes/(app)/+page.server.ts @@ -4,10 +4,11 @@ import { redirect } from '@sveltejs/kit'; import type { PageServerLoad } from './$types'; import type { Chapter } from '$lib/types'; +import { handleRedirect } from '$lib/utils'; -export const load = (async ({ fetch, cookies, locals: { user } }) => { +export const load = (async ({ url, fetch, cookies, locals: { user } }) => { - if (!user) redirect(302, '/login'); + if (!user) redirect(302, handleRedirect('login', url)); const session = cookies.get('session'); diff --git a/src/routes/(app)/badges/+page.server.ts b/src/routes/(app)/badges/+page.server.ts index d40dde6..00f3794 100644 --- a/src/routes/(app)/badges/+page.server.ts +++ b/src/routes/(app)/badges/+page.server.ts @@ -1,6 +1,8 @@ import { redirect } from '@sveltejs/kit'; import type { PageServerLoad } from './$types'; -export const load = (async ({ locals: { user } }) => { - if (!user) redirect(302, '/login'); -}) satisfies PageServerLoad; +import { handleRedirect } from '$lib/utils'; + +export const load: PageServerLoad = async ({ url, locals: { user } }) => { + if (!user) redirect(302, handleRedirect('login', url)); +} diff --git a/src/routes/(app)/chapters/+page.server.ts b/src/routes/(app)/chapters/+page.server.ts index d28906e..2e407f9 100644 --- a/src/routes/(app)/chapters/+page.server.ts +++ b/src/routes/(app)/chapters/+page.server.ts @@ -1,13 +1,14 @@ import { API_URL } from '$env/static/private'; +import { redirect } from '@sveltejs/kit'; import type { PageServerLoad } from './$types'; import type { Chapter } from '$lib/types'; -import { redirect } from '@sveltejs/kit'; +import { handleRedirect } from '$lib/utils'; -export const load = (async ({ locals: { user }, fetch, cookies }) => { +export const load = (async ({ url, locals: { user }, fetch, cookies }) => { - if (!user) redirect(302, '/login'); + if (!user) redirect(302, handleRedirect('login', url)); const session = cookies.get('session'); diff --git a/src/routes/(app)/chapters/[chapterId]/+page.server.ts b/src/routes/(app)/chapters/[chapterId]/+page.server.ts index 02a9cbc..d37de34 100644 --- a/src/routes/(app)/chapters/[chapterId]/+page.server.ts +++ b/src/routes/(app)/chapters/[chapterId]/+page.server.ts @@ -3,11 +3,12 @@ import { API_URL } from '$env/static/private'; import type { PageServerLoad } from './$types'; import type { Chapter } from '$lib/types'; +import { handleRedirect } from '$lib/utils'; import { redirect } from '@sveltejs/kit'; -export const load = (async ({ locals: { user }, fetch, cookies, params: { chapterId } }) => { +export const load = (async ({ url, locals: { user }, fetch, cookies, params: { chapterId } }) => { - if (!user) redirect(302, '/login'); + if (!user) redirect(302, handleRedirect('login', url)); const session = cookies.get('session'); diff --git a/src/routes/(app)/chapters/[chapterId]/groups/+page.server.ts b/src/routes/(app)/chapters/[chapterId]/groups/+page.server.ts index 8a9e115..2d2a3ea 100644 --- a/src/routes/(app)/chapters/[chapterId]/groups/+page.server.ts +++ b/src/routes/(app)/chapters/[chapterId]/groups/+page.server.ts @@ -3,11 +3,12 @@ import { API_URL } from '$env/static/private'; import type { Actions, PageServerLoad } from './$types'; import type { Chapter, Group } from '$lib/types'; +import { handleRedirect } from '$lib/utils'; import { redirect } from '@sveltejs/kit'; -export const load = (async ({ locals: { user }, fetch, cookies, params: { chapterId } }) => { +export const load: PageServerLoad = async ({ url, locals: { user }, fetch, cookies, params: { chapterId } }) => { - if (!user) redirect(302, '/login'); + if (!user) redirect(302, handleRedirect('login', url)); const session = cookies.get('session'); @@ -45,7 +46,7 @@ export const load = (async ({ locals: { user }, fetch, cookies, params: { chapte chapter, groups }; -}) satisfies PageServerLoad; +}; export const actions: Actions = { diff --git a/src/routes/(app)/chapters/[chapterId]/groups/+page.svelte b/src/routes/(app)/chapters/[chapterId]/groups/+page.svelte index 1ee5375..0277a9e 100644 --- a/src/routes/(app)/chapters/[chapterId]/groups/+page.svelte +++ b/src/routes/(app)/chapters/[chapterId]/groups/+page.svelte @@ -17,6 +17,8 @@ export let data: PageData; export let form: ActionData; + let limit = 4; + let name = ''; let submitting = false; @@ -58,19 +60,26 @@