import { useMemo } from "react"; import { Toggle } from "@/components/buttons/Toggle"; import { Icons } from "@/components/Icon"; import { Context } from "@/components/player/internals/ContextUtils"; import { useOverlayRouter } from "@/hooks/useOverlayRouter"; import { usePlayerStore } from "@/stores/player/store"; import { qualityToString } from "@/stores/player/utils/qualities"; import { useSubtitleStore } from "@/stores/subtitles"; import { providers } from "@/utils/providers"; export function SettingsMenu({ id }: { id: string }) { const router = useOverlayRouter(id); const currentQuality = usePlayerStore((s) => s.currentQuality); const lastSelectedLanguage = useSubtitleStore((s) => s.lastSelectedLanguage); const selectedCaptionLanguage = usePlayerStore( (s) => s.caption.selected?.language ); const subtitlesEnabled = useSubtitleStore((s) => s.enabled); const setSubtitleLanguage = useSubtitleStore((s) => s.setLanguage); const currentSourceId = usePlayerStore((s) => s.sourceId); const setCaption = usePlayerStore((s) => s.setCaption); const sourceName = useMemo(() => { if (!currentSourceId) return "..."; return providers.getMetadata(currentSourceId)?.name ?? "..."; }, [currentSourceId]); // TODO actually scrape subtitles to load function toggleSubtitles() { if (!subtitlesEnabled) setSubtitleLanguage(lastSelectedLanguage ?? "en"); else { setSubtitleLanguage(null); setCaption(null); } } return ( Video settings router.navigate("/quality")}> Quality {currentQuality ? qualityToString(currentQuality) : ""} router.navigate("/source")}> Video source {sourceName} Download Viewing Experience Enable Captions toggleSubtitles()} /> router.navigate("/captions")}> Caption settings {selectedCaptionLanguage ?? ""} router.navigate("/playback")}> Playback settings ); }