From 233beb609cfbfe4701c7cabd23898bb2befb3ee4 Mon Sep 17 00:00:00 2001 From: mkelvers Date: Sun, 24 May 2026 22:47:44 +0200 Subject: [PATCH] fix: satisfy typecheck in player --- static/player/episodes/thumbnails.ts | 6 ++++-- static/player/mode.ts | 5 ++++- static/player/state.ts | 25 ++++++++----------------- 3 files changed, 16 insertions(+), 20 deletions(-) diff --git a/static/player/episodes/thumbnails.ts b/static/player/episodes/thumbnails.ts index 3a49437..b421fed 100644 --- a/static/player/episodes/thumbnails.ts +++ b/static/player/episodes/thumbnails.ts @@ -5,12 +5,14 @@ import { state } from '../state'; * Injects images into episode cards, replaces placeholder. */ export const setupThumbnails = (): void => { + const episodeList = state.episodeList; + if (!episodeList) return; + fetch(`/api/watch/thumbnails/${state.malID}`) .then(res => res.json()) .then((data: { mal_id: number; url: string; title?: string }[]) => { - if (!state.episodeList) return; data.forEach(item => { - const card = state.episodeList.querySelector(`[data-episode-id="${item.mal_id}"]`); + const card = episodeList.querySelector(`[data-episode-id="${item.mal_id}"]`); if (!card) return; // inject thumbnail image diff --git a/static/player/mode.ts b/static/player/mode.ts index ea22806..6f903f9 100644 --- a/static/player/mode.ts +++ b/static/player/mode.ts @@ -34,7 +34,10 @@ export const switchMode = (mode: string): void => { if (!state.availableModes.includes(mode) || mode === state.currentMode) return; state.currentMode = mode; localStorage.setItem('player-audio-mode', mode); - loadVideo(streamUrlForMode(mode, state.container.querySelector('[data-quality-select]')?.value)); + const qualitySelect = state.container.querySelector( + '[data-quality-select]' + ) as HTMLSelectElement | null; + loadVideo(streamUrlForMode(mode, qualitySelect?.value)); updateSubtitleOptions(); updateQualityOptions(); updateModeButtons(); diff --git a/static/player/state.ts b/static/player/state.ts index 5f2b728..92becc0 100644 --- a/static/player/state.ts +++ b/static/player/state.ts @@ -105,27 +105,18 @@ const findElement = ( }; const requiredPlayerElements = (container: HTMLElement): RequiredPlayerElements | null => { - const elements = { - video: findElement(container, 'video', HTMLVideoElement), - progress: findElement(container, '[data-progress]', HTMLElement), - scrubber: findElement(container, '[data-scrubber]', HTMLElement), - buffered: findElement(container, '[data-buffered]', HTMLElement), - timeDisplay: findElement(container, '[data-time]', HTMLElement), - durationDisplay: findElement(container, '[data-duration]', HTMLElement), - }; + const video = findElement(container, 'video', HTMLVideoElement); + const progress = findElement(container, '[data-progress]', HTMLElement); + const scrubber = findElement(container, '[data-scrubber]', HTMLElement); + const buffered = findElement(container, '[data-buffered]', HTMLElement); + const timeDisplay = findElement(container, '[data-time]', HTMLElement); + const durationDisplay = findElement(container, '[data-duration]', HTMLElement); - if ( - !elements.video || - !elements.progress || - !elements.scrubber || - !elements.buffered || - !elements.timeDisplay || - !elements.durationDisplay - ) { + if (!video || !progress || !scrubber || !buffered || !timeDisplay || !durationDisplay) { return null; } - return elements; + return { video, progress, scrubber, buffered, timeDisplay, durationDisplay }; }; /**