import type React from "react"; import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { TouchableOpacity, View, type ViewProps } from "react-native"; import { useSafeAreaInsets } from "react-native-safe-area-context"; import type { TrackInfo, VlcPlayerViewRef } from "@/modules/VlcPlayer.types"; import { Text } from "../common/Text"; interface Props extends ViewProps { playerRef: React.RefObject; } export const VideoDebugInfo: React.FC = ({ playerRef, ...props }) => { const [audioTracks, setAudioTracks] = useState(null); const [subtitleTracks, setSubtitleTracks] = useState( null, ); useEffect(() => { const fetchTracks = async () => { if (playerRef.current) { try { const audio = await playerRef.current.getAudioTracks(); const subtitles = await playerRef.current.getSubtitleTracks(); setAudioTracks(audio); setSubtitleTracks(subtitles); } catch (error) { console.log("[VideoDebugInfo] Failed to fetch tracks:", error); } } }; fetchTracks(); }, [playerRef]); const insets = useSafeAreaInsets(); const { t } = useTranslation(); return ( {t("player.playback_state")} {t("player.audio_tracks")} {audioTracks?.map((track, index) => ( {track.name} ({t("player.index")} {track.index}) ))} {t("player.subtitles_tracks")} {subtitleTracks?.map((track, index) => ( {track.name} ({t("player.index")} {track.index}) ))} { if (playerRef.current) { playerRef.current .getAudioTracks() .then(setAudioTracks) .catch((err) => { console.log( "[VideoDebugInfo] Failed to get audio tracks:", err, ); }); playerRef.current .getSubtitleTracks() .then(setSubtitleTracks) .catch((err) => { console.log( "[VideoDebugInfo] Failed to get subtitle tracks:", err, ); }); } }} > {t("player.refresh_tracks")} ); };