diff --git a/src/components/player/modals/AudioTrackModal.tsx b/src/components/player/modals/AudioTrackModal.tsx index a0a23040..97ec9852 100644 --- a/src/components/player/modals/AudioTrackModal.tsx +++ b/src/components/player/modals/AudioTrackModal.tsx @@ -1,11 +1,11 @@ import React from 'react'; -import { View, Text, TouchableOpacity, ScrollView, Dimensions } from 'react-native'; +import { View, Text, TouchableOpacity, ScrollView, useWindowDimensions, StyleSheet, Platform } from 'react-native'; import { MaterialIcons } from '@expo/vector-icons'; -import Animated, { - FadeIn, +import Animated, { + FadeIn, FadeOut, - SlideInRight, - SlideOutRight, + SlideInDown, + SlideOutDown, } from 'react-native-reanimated'; import { getTrackDisplayName, DEBUG_MODE } from '../utils/playerUtils'; import { logger } from '../../../utils/logger'; @@ -18,9 +18,6 @@ interface AudioTrackModalProps { selectAudioTrack: (trackId: number) => void; } -const { width } = Dimensions.get('window'); -const MENU_WIDTH = Math.min(width * 0.85, 400); - export const AudioTrackModal: React.FC = ({ showAudioModal, setShowAudioModal, @@ -28,202 +25,98 @@ export const AudioTrackModal: React.FC = ({ selectedAudioTrack, selectAudioTrack, }) => { - const handleClose = () => { - setShowAudioModal(false); - }; + const { width, height } = useWindowDimensions(); - // Debug logging when modal opens - React.useEffect(() => { - if (showAudioModal && DEBUG_MODE) { - logger.log(`[AudioTrackModal] Modal opened with selectedAudioTrack:`, selectedAudioTrack); - logger.log(`[AudioTrackModal] Available tracks:`, ksAudioTracks); - if (typeof selectedAudioTrack === 'number') { - const selectedTrack = ksAudioTracks.find(track => track.id === selectedAudioTrack); - if (selectedTrack) { - logger.log(`[AudioTrackModal] Selected track found: ${selectedTrack.name} (${selectedTrack.language})`); - } else { - logger.warn(`[AudioTrackModal] Selected track ${selectedAudioTrack} not found in available tracks`); - } - } - } - }, [showAudioModal, selectedAudioTrack, ksAudioTracks]); + const menuWidth = Math.min(width * 0.9, 420); + const menuMaxHeight = height * 0.9; + + const handleClose = () => setShowAudioModal(false); if (!showAudioModal) return null; - + return ( - <> - {/* Backdrop */} - + {/* Backdrop matching SubtitleModal */} + - - + - {/* Side Menu */} - - {/* Header */} - - - Audio Tracks - - - - - - - + - {/* Audio Tracks */} - - - Available Tracks ({ksAudioTracks.length}) - - + {/* Header with shared aesthetics */} + + Audio Tracks + + + {ksAudioTracks.map((track) => { - // Determine if track is selected const isSelected = selectedAudioTrack === track.id; return ( { - if (DEBUG_MODE) { - logger.log(`[AudioTrackModal] Selecting track: ${track.id} (${track.name})`); - } selectAudioTrack(track.id); - // Close modal after selection - setTimeout(() => { - setShowAudioModal(false); - }, 200); + setTimeout(handleClose, 200); + }} + style={{ + padding: 10, + borderRadius: 12, + backgroundColor: isSelected ? 'white' : 'rgba(255,255,255,0.05)', // Matches SubtitleModal item colors + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center' }} - activeOpacity={0.7} > - - - - - {getTrackDisplayName(track)} - - - {track.language && ( - - {track.language.toUpperCase()} - - )} - - {isSelected && ( - - )} + + + {getTrackDisplayName(track)} + + {isSelected && } ); })} - - {ksAudioTracks.length === 0 && ( - - - - No audio tracks available - - - )} - - - - + {ksAudioTracks.length === 0 && ( + + + No audio tracks available + + )} + + + + + ); -}; \ No newline at end of file +};