aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Tools
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-01-01 17:13:47 -0800
committerFuwn <[email protected]>2024-01-01 17:13:47 -0800
commit8b422f231f0f30efbfc498449b5c2ded1c3c77bf (patch)
treeb3d8a75803a7313bfce19d5161de19173a877202 /src/lib/Tools
parentfeat(schedule): add crunchyroll schedule (diff)
downloaddue.moe-8b422f231f0f30efbfc498449b5c2ded1c3c77bf.tar.xz
due.moe-8b422f231f0f30efbfc498449b5c2ded1c3c77bf.zip
chore(schedule): fix types
Diffstat (limited to 'src/lib/Tools')
-rw-r--r--src/lib/Tools/Schedule/Crunchyroll.svelte34
1 files changed, 24 insertions, 10 deletions
diff --git a/src/lib/Tools/Schedule/Crunchyroll.svelte b/src/lib/Tools/Schedule/Crunchyroll.svelte
index 19fcc9b3..efa10a2e 100644
--- a/src/lib/Tools/Schedule/Crunchyroll.svelte
+++ b/src/lib/Tools/Schedule/Crunchyroll.svelte
@@ -1,19 +1,32 @@
<script lang="ts">
import crunchyroll from '$lib/crunchyroll.json';
- import { onMount } from 'svelte';
- const days = crunchyroll
+ interface CrunchyrollMedia<T = number | 'soon' | 'continuing'> {
+ year: number;
+ month: number;
+ day: T;
+ title: string;
+ }
+
+ type KnownMedia = { [key: string]: CrunchyrollMedia<number>[] };
+
+ const days: KnownMedia = crunchyroll
.filter((media) => media.day !== 'soon' && media.day !== 'continuing')
- .reduce((acc, media) => {
- const date = new Date(media.year, media.month - 1, media.day).toLocaleDateString();
- if (!acc[date]) {
- acc[date] = [];
- }
- acc[date].push(media);
+ .reduce((acc: KnownMedia, media) => {
+ const date = new Date(media.year, media.month - 1, media.day as number).toLocaleDateString();
+
+ if (!acc[date]) acc[date] = [];
+
+ acc[date].push(media as CrunchyrollMedia<number>);
+
return acc;
}, {});
- const continuing = crunchyroll.filter((media) => media.day === 'continuing');
- const soon = crunchyroll.filter((media) => media.day === 'soon');
+ const continuing: CrunchyrollMedia<number | string>[] = crunchyroll.filter(
+ (media) => media.day === 'continuing'
+ );
+ const soon: CrunchyrollMedia<number | string>[] = crunchyroll.filter(
+ (media) => media.day === 'soon'
+ );
const ordinalSuffix = (i: number) => {
const j = i % 10;
@@ -30,6 +43,7 @@
<ol>
{#each Object.values(days) as day}
{@const date = new Date(day[0].year, day[0].month - 1, day[0].day)}
+
<p>
<li>
{date.toLocaleString('default', { month: 'long' })}