From 25b78c025491a00379fd7f79aa84c1cdd81fedf0 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Wed, 7 Feb 2024 02:07:54 -0800 Subject: refactor(hololive): move to client-side evaluation --- src/routes/hololive/+page.svelte | 137 +++++++++++++++++++++++++++++++++++ src/routes/hololive/+page.svelte.bak | 130 --------------------------------- 2 files changed, 137 insertions(+), 130 deletions(-) create mode 100644 src/routes/hololive/+page.svelte delete mode 100644 src/routes/hololive/+page.svelte.bak (limited to 'src/routes/hololive') diff --git a/src/routes/hololive/+page.svelte b/src/routes/hololive/+page.svelte new file mode 100644 index 00000000..42e01075 --- /dev/null +++ b/src/routes/hololive/+page.svelte @@ -0,0 +1,137 @@ + + + + +{#await schedulePromise} + + + +{:then scheduleResponse} + {#if scheduleResponse} + {#await scheduleResponse.text()} + + + + {:then untypedSchedule} + {@const schedule = typeSchedule(parseScheduleHtml(untypedSchedule))} + + {#if schedule.lives.length === 0} + + {/if} + +
+ {#each schedule.lives + .filter((live) => { + const time = new Date(live.time); + + return time.getTime() > Date.now() - 12 * 60 * 60 * 1000 || time.getTime() > Date.now() || live.streaming; + }) + .sort((a, b) => { + if (a.streaming && !b.streaming) return -1; + + if (!a.streaming && b.streaming) return 1; + + return new Date(a.time).getTime() - new Date(b.time).getTime(); + }) as live} +
+

+ [{#if live.streaming} + LIVE{:else} + Upcoming{/if}] + {live.streamer} | + {new Date(live.time).toLocaleString()} + {#if live.guests.length > 0} +
+ + With {live.guests.join(', ').replace(/, ([^,]+)$/, ', & $1')} + + {/if} +

+ + + Stream Thumbnail + +
+ {/each} +
+ {:catch} + + {/await} + {:else} + + + + {/if} +{:catch} + +{/await} + + diff --git a/src/routes/hololive/+page.svelte.bak b/src/routes/hololive/+page.svelte.bak deleted file mode 100644 index 76c0707f..00000000 --- a/src/routes/hololive/+page.svelte.bak +++ /dev/null @@ -1,130 +0,0 @@ - - - - -{#await schedulePromise} - - - -{:then scheduleResponse} - {#if scheduleResponse} - {#await scheduleResponse.json()} - - - - {:then untypedSchedule} - {@const schedule = typeSchedule(untypedSchedule)} - - {#if schedule.lives.length === 0} - - {/if} - -
- {#each schedule.lives - .filter((live) => { - const time = new Date(live.time); - - return time.getTime() > Date.now() - 12 * 60 * 60 * 1000 || time.getTime() > Date.now() || live.streaming; - }) - .sort((a, b) => { - if (a.streaming && !b.streaming) return -1; - - if (!a.streaming && b.streaming) return 1; - - return new Date(a.time).getTime() - new Date(b.time).getTime(); - }) as live} -
-

- [{#if live.streaming} - LIVE{:else} - Upcoming{/if}] - {live.streamer} | - {new Date(live.time).toLocaleString()} - {#if live.guests.length > 0} -
- - With {live.guests.join(', ').replace(/, ([^,]+)$/, ', & $1')} - - {/if} -

- - - Stream Thumbnail - -
- {/each} -
- {:catch} - - {/await} - {:else} - - - - {/if} -{:catch} - -{/await} - - -- cgit v1.2.3