diff --git a/src/routes/dashboard/+page.server.ts b/src/routes/dashboard/+page.server.ts new file mode 100644 index 0000000..7f85f49 --- /dev/null +++ b/src/routes/dashboard/+page.server.ts @@ -0,0 +1,59 @@ +import { API_URL } from '$env/static/private'; + +import type { PageServerLoad } from './$types'; + +import type { Chapter } from '$lib/types'; + +export const load = (async ({ parent, fetch, cookies }) => { + await parent(); + + const session = cookies.get('session'); + + let res = await fetch(`${API_URL}/chapters`, { + headers: { + Authorization: `Bearer ${session}` + } + }); + + if (!res.ok) { + return { + daily: null + }; + } + + const chapters = (await res.json()) as Chapter[]; + + const lastChapter = chapters.filter((chapter) => chapter.show).pop(); + + if (!lastChapter) { + return { + daily: null + }; + } + + res = await fetch(`${API_URL}/chapter/${lastChapter.id}`, { + headers: { + Authorization: `Bearer ${session}` + } + }); + + if (!res.ok) { + return { + daily: { + chapter: lastChapter, + puzzle: null + } + }; + } + + const chapter = (await res.json()) as Chapter; + + const lastPuzzle = chapter.puzzles.filter((puzzle) => puzzle.show).pop(); + + return { + daily: { + chapter: lastChapter, + puzzle: lastPuzzle + } + }; +}) satisfies PageServerLoad; diff --git a/src/routes/dashboard/+page.svelte b/src/routes/dashboard/+page.svelte index c30b98f..69acc45 100644 --- a/src/routes/dashboard/+page.svelte +++ b/src/routes/dashboard/+page.svelte @@ -1,27 +1,51 @@ -
+
+ {#if data.daily && data.daily.puzzle} +
+
+ {data.daily.chapter.name} + + {data.daily.puzzle.name} ({data.daily.puzzle.score ?? '?'}/{data.daily.puzzle.scoreMax}) + +
+
+ +
+
+ {/if}

Tableau de bord

Ceci est la page d'accueil du dashboard

-
+
-
+

Derniers puzzles