@theoplayer/react-native-ui
Version:
A React Native UI for @theoplayer/react-native
43 lines • 1.47 kB
JavaScript
import React, { useCallback, useContext } from 'react';
import { Platform } from 'react-native';
import { PlayerContext } from '../util/PlayerContext';
import { isConnected } from './ChromecastButton';
import { ActionButton } from './actionbutton/ActionButton';
import { AirplaySvg } from './svg/AirplaySvg';
import { CastState } from 'react-native-theoplayer';
import { useAirplay } from '../../hooks/useAirplay';
import { TestIDs } from '../../utils/TestIDs';
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
/**
* The default button to enable Airplay for the `react-native-theoplayer` UI.
*/
export function AirplayButton(props) {
const {
icon
} = props;
const {
player
} = useContext(PlayerContext);
const castState = useAirplay();
const onUIAirplayToggled = useCallback(() => {
if (castState !== CastState.unavailable) {
if (isConnected(castState)) {
player.cast.airplay?.stop();
} else {
player.cast.airplay?.start();
}
}
}, [player, castState]);
if (castState === CastState.unavailable || Platform.isTV) {
return /*#__PURE__*/_jsx(_Fragment, {});
}
return /*#__PURE__*/_jsx(ActionButton, {
style: props.style,
testID: props.testID ?? TestIDs.AIRPLAY_BUTTON,
svg: icon ?? /*#__PURE__*/_jsx(AirplaySvg, {}),
touchable: true,
onPress: onUIAirplayToggled,
highlighted: isConnected(castState)
});
}
//# sourceMappingURL=AirplayButton.js.map