react-airplay
Version:
Airplay bridge for React Native
54 lines (41 loc) • 2.44 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useAvAudioSessionRoutes = exports.useAirplayRoutes = exports.useAirplayConnectivity = exports.useExternalPlaybackAvailability = void 0;
var _react = require("react");
var _airplayModule = require("./airplayModule");
const useExternalPlaybackAvailability = options => {
var _options$useCachedVal2;
const [isExternalPlaybackAvailable, setIsExternalPlaybackAvailable] = (0, _react.useState)(false);
(0, _react.useEffect)(() => {
var _options$useCachedVal;
if ((_options$useCachedVal = options === null || options === void 0 ? void 0 : options.useCachedValue) !== null && _options$useCachedVal !== void 0 ? _options$useCachedVal : false) return;
const subscription = (0, _airplayModule.onExternalPlaybackAvailabilityChanged)(setIsExternalPlaybackAvailable);
_airplayModule.ExternalPlaybackAvailabilityContext === null || _airplayModule.ExternalPlaybackAvailabilityContext === void 0 ? void 0 : _airplayModule.ExternalPlaybackAvailabilityContext.fetchExternalPlaybackAvailability().then(setIsExternalPlaybackAvailable);
return subscription.remove.bind(subscription);
}, [(_options$useCachedVal2 = options === null || options === void 0 ? void 0 : options.useCachedValue) !== null && _options$useCachedVal2 !== void 0 ? _options$useCachedVal2 : false]);
return isExternalPlaybackAvailable;
};
exports.useExternalPlaybackAvailability = useExternalPlaybackAvailability;
const useAirplayConnectivity = () => {
const routes = useAirplayRoutes();
return routes.length > 0;
};
exports.useAirplayConnectivity = useAirplayConnectivity;
const useAirplayRoutes = () => {
const routes = useAvAudioSessionRoutes();
return routes.filter(route => route.portType === 'AirPlay');
};
exports.useAirplayRoutes = useAirplayRoutes;
const useAvAudioSessionRoutes = () => {
const [routes, setRoutes] = (0, _react.useState)([]);
(0, _react.useEffect)(() => {
const subscription = (0, _airplayModule.onAvAudioSessionRoutesChanged)(setRoutes);
_airplayModule.AirplayConnectivityContext === null || _airplayModule.AirplayConnectivityContext === void 0 ? void 0 : _airplayModule.AirplayConnectivityContext.fetchAvAudioSessionRoutes().then(setRoutes);
return subscription.remove.bind(subscription);
}, []);
return routes;
};
exports.useAvAudioSessionRoutes = useAvAudioSessionRoutes;
//# sourceMappingURL=hooks.js.map
;