UNPKG

npaw-plugin-adapters

Version:
194 lines (168 loc) 5.29 kB
export default class TCPlayerAdapter { checkExistsPlayer() { try { return this.checkExistsObjectOnPage(this.player); } catch (err) { return true; } } pauseListener(e) { this.firePlayerLog('pauseListener', {}); this.firePause({}, 'pauseListener'); } bufferingListener(e) { this.firePlayerLog('waitingListener', {}); this.fireBufferBegin({}, false, 'waitingListener'); } getIsLive() { return this.player.duration() === Infinity; } playListener(e) { this.firePlayerLog('playListener', {}); if (this.player && this.playhead) { this.checkReadyState(this.player.readyState, 'playListener'); } if (typeof this.lastResource === 'undefined' || (!!this.getResource() && this.lastResource !== this.getResource())) { this.lastResource = this.getResource().split('?')[0]; } this.fireStart({}, 'playListener'); } registerListeners() { this.references = { play: this.playListener.bind(this), pause: this.pauseListener.bind(this), playing: this.playingListener.bind(this), loadstart: this.loadStartListener.bind(this), error: this.errorListener.bind(this), seeking: this.seekingListener.bind(this), seeked: this.seekedListener.bind(this), ended: this.endedListener.bind(this), waiting: this.bufferingListener.bind(this), timeupdate: this.timeupdateListener.bind(this), canplay: this.canPlayListener.bind(this), canplaythrough: this.canPlayThroughListener.bind(this), loadedmetadata: this.loadedMetadataListener.bind(this), loadeddata: this.loadedDataListener.bind(this) }; for (const key in this.references) { if (this.references[key]) { this.player.on(key, this.references[key]); } } } endedListener(e) { const adsAdapter = this.getVideo().getAdsAdapter(); let willShowCSAIAds = false; if (adsAdapter && typeof adsAdapter.isDAI !== 'undefined') { if (!adsAdapter.isDAI) { // This means we are using Google IMA with CSAI willShowCSAIAds = adsAdapter.player.getCuePoints().includes(-1); } } if (!willShowCSAIAds) { this.firePlayerLog('endedListener', {}); this.fireStop({}, 'endedListener'); } } getPlayrate() { return this.player.playbackRate(); } canPlayListener(e) { if (this.player) { if (this.playhead || (this.getVideo() && this.getVideo().getIsLive())) { this.checkReadyState(this.player.readyState, 'canPlayListener'); } } } canPlayThroughListener(e) { if (this.player) { if (this.playhead || (this.getVideo() && this.getVideo().getIsLive())) { this.checkReadyState(this.player.readyState, 'canPlayThroughListener'); } } } timeupdateListener(e) { if ((this.getPlayhead() > 0 || (this.getVideo() && this.getVideo().getIsLive())) && !this.player.error) { this.fireStart({}, 'timeupdateListener'); this.fireJoin({}, 'timeupdateListener'); } } getResource() { return this.player.src(); } getPlayhead() { return this.player.currentTime(); } getDuration() { return this.player.duration(); } getDroppedFrames() { return this.player.getVideoPlaybackQuality().droppedVideoFrames; } seekingListener(e) { this.firePlayerLog('seekingListener', {}); this.fireSeekBegin({}, false, 'seekingListener'); } getPlayerName() { return 'tcplayer'; } playingListener(e) { this.firePlayerLog('playingListener', {}); this.fireJoin({}, 'playingListener'); this.fireResume({}, 'playingListener'); this.fireSeekEnd({}, 'playingListener'); if (this.flags.isBuffering) { this.fireBufferEnd({}, 'playingListener'); } } errorListener(e) { this.firePlayerLog('errorListener', {}); var msg = null; var code = null; try { if (e && e.target && e.target.error) { code = e.target.error.code; msg = e.target.error.message; } } catch (err) { /* empty */ } this.fireError(code, msg, undefined, undefined, 'errorListener'); } loadedMetadataListener(e) { if (this.player) { if (this.playhead || (this.getVideo() && this.getVideo().getIsLive())) { this.checkReadyState(this.player.readyState, 'loadedMetadataListener'); } } } getVersion() { return '7.0.0-tcplayer-jsclass'; } seekedListener(e) { this.firePlayerLog('seekedListener', {}); this.fireSeekEnd({}, 'seekedListener'); } loadStartListener(e) { this.firePlayerLog('loadStartListener', {}); if (this.flags.isJoined && !!this.getResource() && this.getResource().split('?')[0] !== this.lastResource) { this.fireStop({}, 'loadStartListener'); } } unregisterListeners() { if (this.monitor) this.monitor.stop(); if (this.player && this.references) { for (var key in this.references) { this.player.removeEventListener(key, this.references[key]); delete this.references[key]; } } } loadedDataListener(e) { if (this.player) { if (this.playhead || (this.getVideo() && this.getVideo().getIsLive())) { this.checkReadyState(this.player.readyState, 'loadedDataListener'); } } } }