From 875917bef08f67b8737091b205d1e00700756fac Mon Sep 17 00:00:00 2001 From: Fuwn Date: Mon, 26 Jan 2026 22:06:11 -0800 Subject: feat: Complete Svelte 5 runes syntax migration --- src/lib/Schedule/Crunchyroll.svelte | 3 +- src/lib/Tools/Birthdays.svelte | 126 +++++++++++++++-------------- src/lib/Tools/Likes.svelte | 12 +-- src/lib/Tools/Tracker/Tool.svelte | 15 ++-- src/lib/Tools/UmaMusumeBirthdays.svelte | 24 +++--- src/routes/+error.svelte | 24 +++--- src/routes/+layout.svelte | 40 +++++---- src/routes/reader/+page.svelte | 7 +- src/routes/tools/[tool]/+page.svelte | 15 +++- src/routes/user/[user]/+page.svelte | 39 +++++---- src/routes/user/[user]/badges/+page.svelte | 96 +++++++++++----------- 11 files changed, 212 insertions(+), 189 deletions(-) diff --git a/src/lib/Schedule/Crunchyroll.svelte b/src/lib/Schedule/Crunchyroll.svelte index 9d7c8e70..9e687768 100644 --- a/src/lib/Schedule/Crunchyroll.svelte +++ b/src/lib/Schedule/Crunchyroll.svelte @@ -29,8 +29,7 @@ const soon: CrunchyrollMedia[] = crunchyroll.filter( (media) => media.day === 'soon' ); - - $: columnCount = Math.ceil(Object.keys(days).length / 2); + let columnCount = $derived(Math.ceil(Object.keys(days).length / 2)); const ordinalSuffix = (i: number) => { const j = i % 10; diff --git a/src/lib/Tools/Birthdays.svelte b/src/lib/Tools/Birthdays.svelte index 122662d4..a52887ed 100644 --- a/src/lib/Tools/Birthdays.svelte +++ b/src/lib/Tools/Birthdays.svelte @@ -18,28 +18,29 @@ const urlParameters = browser ? new URLSearchParams(window.location.search) : null; let date = new Date(); - let month = parseOrDefault(urlParameters, 'month', date.getMonth() + 1); - let day = parseOrDefault(urlParameters, 'day', date.getDate()); - let anisearchBirthdays: Promise; - let acdbBirthdays: Promise; + let month = $state(parseOrDefault(urlParameters, 'month', date.getMonth() + 1)); + let day = $state(parseOrDefault(urlParameters, 'day', date.getDate())); + let anisearchBirthdays: Promise | undefined = $state(undefined); + let acdbBirthdays: Promise | undefined = $state(undefined); - $: { - month = Math.min(month, 12); - month = Math.max(month, 1); - day = Math.min(day, new Date(2024, month, 0).getDate()); - day = Math.max(day, 1); + $effect(() => { + const clampedMonth = Math.max(1, Math.min(month, 12)); + const maxDay = new Date(2024, clampedMonth, 0).getDate(); + const clampedDay = Math.max(1, Math.min(day, maxDay)); - if (browser) anisearchBirthdays = aniSearchBirthdays(month, day); + if (clampedMonth !== month) month = clampedMonth; + if (clampedDay !== day) day = clampedDay; + if (browser) anisearchBirthdays = aniSearchBirthdays(clampedMonth, clampedDay); - acdbBirthdays = ACDBBirthdays(month, day); + acdbBirthdays = ACDBBirthdays(clampedMonth, clampedDay); if (browser) { - $page.url.searchParams.set('month', month.toString()); - $page.url.searchParams.set('day', day.toString()); + $page.url.searchParams.set('month', clampedMonth.toString()); + $page.url.searchParams.set('day', clampedDay.toString()); clearAllParameters(['month', 'day']); history.replaceState(null, '', `?${$page.url.searchParams.toString()}`); } - } + }); onMount(() => clearAllParameters(['month', 'day'])); @@ -94,58 +95,61 @@ }; -{#await acdbBirthdays} - - - -{:then acdbBirthdays} - {#await anisearchBirthdays} - - +{#if acdbBirthdays && anisearchBirthdays} + {#await acdbBirthdays} + - {:then anisearch} - {@const birthdays = combineBirthdaySources(acdbBirthdays, anisearch)} - -

- + {#each Array.from({ length: 12 }, (_, i) => i + 1) as month} + + {/each} + + + +

+ +
+ {#each birthdays as birthday} + {/each} - - - -

- -
- {#each birthdays as birthday} - - {/each} -
+
+ {:catch} + + {/await} {:catch} {/await} -{:catch} - -{/await} +{:else} + + +{/if}