UNPKG

@codelab/nativescript-cast

Version:

NativeScript Chromecast Plugin.

165 lines (159 loc) 7.46 kB
import { Utils } from '@nativescript/core'; import { CastButtonBase } from './cast.common'; import { convertMediaInfo, queueTypeEnumToString, repeatModeEnumToString, } from './cast.ios'; import { CastEvent, PlayerState, } from './cast.types'; var RemoteMediaClientListenerImpl = /** @class */ (function (_super) { __extends(RemoteMediaClientListenerImpl, _super); function RemoteMediaClientListenerImpl() { return _super !== null && _super.apply(this, arguments) || this; } RemoteMediaClientListenerImpl.prototype.remoteMediaClientDidStartMediaSessionWithID = function (client, sessionId) { // console.log('didStartMediaSessionWithID ' + sessionId); }; RemoteMediaClientListenerImpl.prototype.remoteMediaClientDidUpdateMediaStatus = function (client, mediaStatus) { // console.log('updated mediaStatus'); var info = null; var status = null; if (mediaStatus) { status = this.toCastMediaStatus(mediaStatus); var mediaInfo = mediaStatus.mediaInformation; if (mediaInfo) { info = convertMediaInfo(mediaInfo); } } this.owner.sendEvent(CastButtonBase.castEvent, { eventName: CastEvent.onMediaStatusChanged, status: status, info: info, ios: this.owner.nativeView }); }; RemoteMediaClientListenerImpl.prototype.remoteMediaClientDidInsertQueueItemsWithIDsBeforeItemWithID = function (client, queueItemIDs, beforeItemID) { // console.log('remoteMediaClientDidInsertQueueItemsWithIDsBeforeItemWithID'); // console.log(queueItemIDs); }; RemoteMediaClientListenerImpl.prototype.remoteMediaClientDidReceiveQueueItemIDs = function (client, queueItemIDs) { /* let parsedQueueItemIDs = []; if (queueItemIDs.count > 0) { parsedQueueItemIDs = Utils.ios.collections.nsArrayToJSArray(queueItemIDs); } this.owner.sendEvent(CastButtonBase.castEvent, { eventName: CastEvent.onDidReceiveQueueItemIDs, queueItemIDs: parsedQueueItemIDs, ios: this.owner.nativeView }); */ }; RemoteMediaClientListenerImpl.prototype.remoteMediaClientDidReceiveQueueItems = function (client, queueItems) { /* const parsedQueueItems = []; if (queueItems.count > 0) { const arr = Utils.ios.collections.nsArrayToJSArray(queueItems); arr.forEach((item: any) => { const activeTrackIds = item.activeTrackIDs ? Utils.ios.collections.nsArrayToJSArray(item.activeTrackIDs).map((trackId) => +trackId) : []; const queueItem: QueueItem = { mediaInformation: convertMediaInfo(item.mediaInformation), itemID: item.itemID, autoplay: item.autoplay, startTime: item.startTime, playbackDuration: item.playbackDuration, preloadTime: item.preloadTime, activeTrackIds: activeTrackIds, customData: item.customData, }; parsedQueueItems.push(queueItem); }); } this.owner.sendEvent(CastButtonBase.castEvent, { eventName: CastEvent.onDidReceiveQueueItems, queueItems: parsedQueueItems, ios: this.owner.nativeView }); */ }; RemoteMediaClientListenerImpl.prototype.remoteMediaClientDidRemoveQueueItemsWithIDs = function (client, queueItems) { // console.log('remoteMediaClientDidRemoveQueueItemsWithIDs'); // console.log(queueItems); }; RemoteMediaClientListenerImpl.prototype.remoteMediaClientDidInsertQueueItemsWithIDs = function (queueItems) { // console.log('didInremoteMediaClientDidInsertQueueItemsWithIDssertQueueItemsWithIDs'); // console.log(queueItems); }; RemoteMediaClientListenerImpl.prototype.remoteMediaClientDidUpdateQueue = function (client) { // console.log('remoteMediaClientDidUpdateQueue'); }; RemoteMediaClientListenerImpl.prototype.remoteMediaClientDidUpdateQueueItemsWithIDs = function (client, queueItems) { // console.log('remoteMediaClientDidUpdateQueueItemsWithIDs'); // console.log(queueItems); }; RemoteMediaClientListenerImpl.prototype.remoteMediaClientDidUpdateMediaMetadata = function (client, mediaMetaData) { // console.log('remoteMediaClientDidUpdateMediaMetadata'); // console.log(mediaMetaData); }; RemoteMediaClientListenerImpl.prototype.remoteMediaClientDidUpdatePreloadStatus = function (client) { // console.log('remoteMediaClientDidUpdatePreloadStatus'); }; RemoteMediaClientListenerImpl.prototype.toCastMediaStatus = function (mediaStatus) { var playerState = PlayerState.UNKNOWN; switch (mediaStatus.playerState) { case GCKMediaPlayerState.Idle: playerState = PlayerState.IDLE; break; case GCKMediaPlayerState.Playing: playerState = PlayerState.PLAYING; break; case GCKMediaPlayerState.Paused: playerState = PlayerState.PAUSED; break; case GCKMediaPlayerState.Buffering: playerState = PlayerState.BUFFERING; break; case GCKMediaPlayerState.Loading: playerState = PlayerState.LOADING; break; default: playerState = PlayerState.UNKNOWN; break; } var activeTrackIds = mediaStatus.activeTrackIDs ? Utils.ios.collections.nsArrayToJSArray(mediaStatus.activeTrackIDs).map(function (trackId) { return +trackId; }) : []; var queueData = null; if (mediaStatus.queueData) { queueData = { name: mediaStatus.queueData.name, queueID: mediaStatus.queueData.queueID, queueType: queueTypeEnumToString(mediaStatus.queueData.queueType), repeatMode: repeatModeEnumToString(mediaStatus.queueData.repeatMode), // containerMetadata startIndex: mediaStatus.queueData.startIndex, startTime: mediaStatus.queueData.startTime, }; } return { activeTrackIds: activeTrackIds, playerState: playerState, idleReason: mediaStatus.idleReason, isMuted: mediaStatus.isMuted, playbackRate: mediaStatus.playbackRate, streamPosition: mediaStatus.streamPosition, volume: mediaStatus.volume, currentItemID: mediaStatus.currentItemID, loadingItemID: mediaStatus.loadingItemID, preloadedItemID: mediaStatus.preloadedItemID, queueData: queueData, queueItemCount: mediaStatus.queueItemCount, // BUG: always returning false? // causing prev/next buttons to not work on media controller? queueHasPreviousItem: mediaStatus.queueHasPreviousItem, queueHasNextItem: mediaStatus.queueHasNextItem, }; }; RemoteMediaClientListenerImpl.ObjCProtocols = [GCKRemoteMediaClientListener]; return RemoteMediaClientListenerImpl; }(NSObject)); export { RemoteMediaClientListenerImpl }; //# sourceMappingURL=remote-media-client-listener.ios.js.map