* fix: fix crash when invalid index type is provided and minor clean up * fix: review video track management. Fix index support and rework string vs int in tracks management * fix: ABR track selection check * fix: split track selector in sample and lint code * fix: ensure we don't report null fields * chore: improve tracks displayed * chore: start moving to selection by index only
65 lines
1.7 KiB
TypeScript
65 lines
1.7 KiB
TypeScript
import {Picker} from '@react-native-picker/picker';
|
|
import {Text} from 'react-native';
|
|
import {TextTrack, SelectedTrack} from 'react-native-video';
|
|
import styles from '../styles';
|
|
import React from 'react';
|
|
|
|
export interface TextTrackSelectorType {
|
|
textTracks: Array<TextTrack>;
|
|
selectedTextTrack: SelectedTrack | undefined;
|
|
onValueChange: (arg0: string) => void;
|
|
textTracksSelectionBy: string;
|
|
}
|
|
|
|
const TextTrackSelector = ({
|
|
textTracks,
|
|
selectedTextTrack,
|
|
onValueChange,
|
|
textTracksSelectionBy,
|
|
}: TextTrackSelectorType) => {
|
|
return (
|
|
<>
|
|
<Text style={styles.controlOption}>TextTrack</Text>
|
|
<Picker
|
|
style={styles.picker}
|
|
itemStyle={styles.pickerItem}
|
|
selectedValue={`${selectedTextTrack?.value}`}
|
|
onValueChange={itemValue => {
|
|
if (itemValue !== 'empty') {
|
|
onValueChange(itemValue);
|
|
}
|
|
}}>
|
|
{textTracks?.length <= 0 ? (
|
|
<Picker.Item label={'empty'} value={'empty'} key={'empty'} />
|
|
) : (
|
|
<Picker.Item label={'none'} value={'none'} key={'none'} />
|
|
)}
|
|
{textTracks.map(track => {
|
|
if (!track) {
|
|
return;
|
|
}
|
|
if (textTracksSelectionBy === 'index') {
|
|
return (
|
|
<Picker.Item
|
|
label={`${track.index}`}
|
|
value={track.index}
|
|
key={track.index}
|
|
/>
|
|
);
|
|
} else {
|
|
return (
|
|
<Picker.Item
|
|
label={track.language}
|
|
value={track.language}
|
|
key={track.language}
|
|
/>
|
|
);
|
|
}
|
|
})}
|
|
</Picker>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default TextTrackSelector;
|