import React from 'react';
import { View, Text, TouchableOpacity, ScrollView, Dimensions } from 'react-native';
import { MaterialIcons } from '@expo/vector-icons';
import { BlurView } from 'expo-blur';
import Animated, {
FadeIn,
FadeOut,
useAnimatedStyle,
useSharedValue,
withTiming,
} from 'react-native-reanimated';
import { LinearGradient } from 'expo-linear-gradient';
import { styles } from '../utils/playerStyles';
import { getTrackDisplayName } from '../utils/playerUtils';
interface AudioTrackModalProps {
showAudioModal: boolean;
setShowAudioModal: (show: boolean) => void;
vlcAudioTracks: Array<{id: number, name: string, language?: string}>;
selectedAudioTrack: number | null;
selectAudioTrack: (trackId: number) => void;
}
const { width, height } = Dimensions.get('window');
const MODAL_WIDTH = Math.min(width - 32, 520);
const MODAL_MAX_HEIGHT = height * 0.85;
const AudioBadge = ({
text,
color,
bgColor,
icon
}: {
text: string;
color: string;
bgColor: string;
icon?: string;
}) => (
{icon && (
)}
{text}
);
export const AudioTrackModal: React.FC = ({
showAudioModal,
setShowAudioModal,
vlcAudioTracks,
selectedAudioTrack,
selectAudioTrack,
}) => {
const modalOpacity = useSharedValue(0);
React.useEffect(() => {
if (showAudioModal) {
modalOpacity.value = withTiming(1, { duration: 200 });
}
}, [showAudioModal]);
const modalStyle = useAnimatedStyle(() => ({
opacity: modalOpacity.value,
}));
const handleClose = () => {
modalOpacity.value = withTiming(0, { duration: 150 });
setTimeout(() => setShowAudioModal(false), 150);
};
if (!showAudioModal) return null;
return (
Audio Tracks
Choose from {vlcAudioTracks.length} available track{vlcAudioTracks.length !== 1 ? 's' : ''}
{vlcAudioTracks.length > 0 ? vlcAudioTracks.map((track) => (
{
selectAudioTrack(track.id);
handleClose();
}}
activeOpacity={0.85}
>
{getTrackDisplayName(track)}
{selectedAudioTrack === track.id && (
ACTIVE
)}
{track.language && (
)}
)) : (
No audio tracks found
No audio tracks are available for this content.{'\n'}Try a different source or check your connection.
)}
);
};
export default AudioTrackModal;