UNPKG

react-airplay

Version:
34 lines (32 loc) 1.96 kB
import { useEffect, useState } from 'react'; import { AirplayConnectivityContext, ExternalPlaybackAvailabilityContext, onAvAudioSessionRoutesChanged, onExternalPlaybackAvailabilityChanged } from './airplayModule'; export const useExternalPlaybackAvailability = options => { var _options$useCachedVal2; const [isExternalPlaybackAvailable, setIsExternalPlaybackAvailable] = useState(false); 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 = onExternalPlaybackAvailabilityChanged(setIsExternalPlaybackAvailable); ExternalPlaybackAvailabilityContext === null || ExternalPlaybackAvailabilityContext === void 0 ? void 0 : 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; }; export const useAirplayConnectivity = () => { const routes = useAirplayRoutes(); return routes.length > 0; }; export const useAirplayRoutes = () => { const routes = useAvAudioSessionRoutes(); return routes.filter(route => route.portType === 'AirPlay'); }; export const useAvAudioSessionRoutes = () => { const [routes, setRoutes] = useState([]); useEffect(() => { const subscription = onAvAudioSessionRoutesChanged(setRoutes); AirplayConnectivityContext === null || AirplayConnectivityContext === void 0 ? void 0 : AirplayConnectivityContext.fetchAvAudioSessionRoutes().then(setRoutes); return subscription.remove.bind(subscription); }, []); return routes; }; //# sourceMappingURL=hooks.js.map