diff options
| author | Fuwn <[email protected]> | 2023-12-03 20:43:47 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-12-03 20:43:47 -0800 |
| commit | b849c7a2a989eb9921ac800b0554e64a40c1ec4f (patch) | |
| tree | a39de57ac24217cbb533c3f1546a45cf0fa946a7 /src/lib/Tools | |
| parent | fix(birthdays): use months day count (diff) | |
| download | due.moe-b849c7a2a989eb9921ac800b0554e64a40c1ec4f.tar.xz due.moe-b849c7a2a989eb9921ac800b0554e64a40c1ec4f.zip | |
feat(birthdays): reactive url
Diffstat (limited to 'src/lib/Tools')
| -rw-r--r-- | src/lib/Tools/CharacterBirthdays.svelte | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/src/lib/Tools/CharacterBirthdays.svelte b/src/lib/Tools/CharacterBirthdays.svelte index 30f00405..f910f7c4 100644 --- a/src/lib/Tools/CharacterBirthdays.svelte +++ b/src/lib/Tools/CharacterBirthdays.svelte @@ -1,8 +1,9 @@ <script lang="ts"> + import { browser } from '$app/environment'; + import { page } from '$app/stores'; import { ACDBBirthdays, type ACDBBirthday } from '$lib/Birthday/ACDB'; import { aniSearchBirthdays, type aniSearchBirthday } from '$lib/Birthday/aniSearch'; import Error from '$lib/Error.svelte'; - import { onMount } from 'svelte'; interface Birthday { name: string; @@ -10,13 +11,32 @@ origin?: string; } + const parseOrDefault = (parameter: string, fallback: number): number => + browser && urlParameters?.size !== 0 + ? parseInt(urlParameters?.get(parameter) || '', 10) || fallback + : fallback; + + const urlParameters = browser ? new URLSearchParams(window.location.search) : null; let date = new Date(); - let month = date.getMonth() + 1; - let day = date.getDate(); + let month = parseOrDefault('month', date.getMonth() + 1); + let day = parseOrDefault('day', date.getDate()); let anisearchBirthdays: Promise<aniSearchBirthday[]>; let acdbBirthdays: Promise<ACDBBirthday[]>; $: { + month = Math.min(month, 12); + month = Math.max(month, 1); + day = Math.min(day, new Date(0, month, 0).getDate()); + day = Math.max(day, 1); + + if (browser) { + $page.url.searchParams.set('month', month.toString()); + $page.url.searchParams.set('day', day.toString()); + history.replaceState(null, '', `?${$page.url.searchParams.toString()}`); + } + } + + $: { anisearchBirthdays = aniSearchBirthdays(month, day); acdbBirthdays = ACDBBirthdays(month, day); } |