Files
k-tv/k-tv-frontend/hooks/use-subtitles.ts
Gabriel Kaszewski c4d2e48f73 fix(frontend): resolve all eslint warnings and errors
- block-timeline: ref updates moved to useLayoutEffect
- channel-card, guide/page: Date.now() wrapped in useMemo + suppress purity rule
- auth-context: lazy localStorage init (removes setState-in-effect)
- use-channel-order: lazy localStorage init (removes setState-in-effect)
- use-idle: start timer on mount without calling resetIdle (removes setState-in-effect)
- use-subtitles, transcode-settings-dialog: inline eslint-disable on exact violating line
- providers: block-level eslint-disable for tokenRef closure in useState initializer
- edit-channel-sheet: remove unused minsToTime and BlockContent imports
- docs/page: escape unescaped quote and apostrophe entities
2026-03-17 02:40:32 +01:00

29 lines
961 B
TypeScript

"use client";
import { useState, useEffect } from "react";
import type { SubtitleTrack } from "@/app/(main)/tv/components/video-player";
export function useSubtitlePicker(channelIdx: number, slotId?: string) {
const [subtitleTracks, setSubtitleTracks] = useState<SubtitleTrack[]>([]);
const [activeSubtitleTrack, setActiveSubtitleTrack] = useState(-1);
const [showSubtitlePicker, setShowSubtitlePicker] = useState(false);
// Reset when channel or slot changes — resetting event-driven state on key
// change is intentional; no clean alternative without a component key reset
useEffect(() => {
// eslint-disable-next-line react-hooks/set-state-in-effect
setSubtitleTracks([]);
setActiveSubtitleTrack(-1);
setShowSubtitlePicker(false);
}, [channelIdx, slotId]);
return {
subtitleTracks,
setSubtitleTracks,
activeSubtitleTrack,
setActiveSubtitleTrack,
showSubtitlePicker,
setShowSubtitlePicker,
};
}