import { Ionicons } from "@expo/vector-icons"; import React, { useCallback } from "react"; import { Platform, TouchableOpacity } from "react-native"; const DropdownMenu = !Platform.isTV ? require("zeego/dropdown-menu") : null; import { BITRATES } from "@/components/BitrateSelector"; import { useLocalSearchParams, useRouter } from "expo-router"; import { useControlContext } from "../contexts/ControlContext"; import { useVideoContext } from "../contexts/VideoContext"; const DropdownView = () => { const videoContext = useVideoContext(); const { subtitleTracks, audioTracks } = videoContext; const ControlContext = useControlContext(); const [item, mediaSource] = [ ControlContext?.item, ControlContext?.mediaSource, ]; const router = useRouter(); const { subtitleIndex, audioIndex, bitrateValue } = useLocalSearchParams<{ itemId: string; audioIndex: string; subtitleIndex: string; mediaSourceId: string; bitrateValue: string; }>(); const changeBitrate = useCallback( (bitrate: string) => { const queryParams = new URLSearchParams({ itemId: item.Id ?? "", audioIndex: audioIndex?.toString() ?? "", subtitleIndex: subtitleIndex.toString() ?? "", mediaSourceId: mediaSource?.Id ?? "", bitrateValue: bitrate.toString(), }).toString(); // @ts-expect-error router.replace(`player/direct-player?${queryParams}`); }, [item, mediaSource, subtitleIndex, audioIndex], ); return ( Quality {BITRATES?.map((bitrate, idx: number) => ( changeBitrate(bitrate.value?.toString() ?? "") } > {bitrate.key} ))} Subtitle {subtitleTracks?.map((sub, idx: number) => ( sub.setTrack()} > {sub.name} ))} Audio {audioTracks?.map((track, idx: number) => ( track.setTrack()} > {track.name} ))} ); }; export default DropdownView;