import { PlaybackStatePayload, ProgressUpdatePayload, VlcPlayerViewRef, TrackInfo, } from "@/modules/vlc-player/src/VlcPlayer.types"; import { useState, useEffect } from "react"; import { View, TouchableOpacity, ViewProps } from "react-native"; import { Text } from "../common/Text"; import React from "react"; interface Props extends ViewProps { playbackState: PlaybackStatePayload["nativeEvent"] | null; progress: ProgressUpdatePayload["nativeEvent"] | null; playerRef: React.RefObject; } export const VideoDebugInfo: React.FC = ({ playbackState, progress, playerRef, ...props }) => { const [audioTracks, setAudioTracks] = useState(null); const [subtitleTracks, setSubtitleTracks] = useState( null ); useEffect(() => { const fetchTracks = async () => { if (playerRef.current) { const audio = await playerRef.current.getAudioTracks(); const subtitles = await playerRef.current.getSubtitleTracks(); setAudioTracks(audio); setSubtitleTracks(subtitles); } }; fetchTracks(); }, [playerRef]); return ( Playback State: {playbackState && ( <> Type: {playbackState.type} Current Time: {playbackState.currentTime} Duration: {playbackState.duration} Is Buffering: {playbackState.isBuffering ? "Yes" : "No"} Target: {playbackState.target} )} Progress: {progress && ( <> Current Time: {progress.currentTime} Duration: {progress.duration.toFixed(2)} )} Audio Tracks: {audioTracks && audioTracks.map((track) => ( {track.name} (Index: {track.index}) ))} Subtitle Tracks: {subtitleTracks && subtitleTracks.map((track) => ( {track.name} (Index: {track.index}) ))} { if (playerRef.current) { playerRef.current.getAudioTracks().then(setAudioTracks); playerRef.current.getSubtitleTracks().then(setSubtitleTracks); } }} > Refresh Tracks ); };