2018-10-23 01:05:09 +03:00
|
|
|
define(["playbackManager", "itemHelper"], function(playbackManager, itemHelper) {
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
function getRequirePromise(deps) {
|
|
|
|
return new Promise(function(resolve, reject) {
|
|
|
|
require(deps, resolve)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
function validatePlayback(options) {
|
|
|
|
var feature = "playback";
|
|
|
|
if (!options.item || "TvChannel" !== options.item.Type && "Recording" !== options.item.Type || (feature = "livetv"), "playback" === feature) {
|
|
|
|
var player = playbackManager.getCurrentPlayer();
|
|
|
|
if (player && !player.isLocalPlayer) return Promise.resolve()
|
|
|
|
}
|
|
|
|
return getRequirePromise(["registrationServices"]).then(function(registrationServices) {
|
|
|
|
return registrationServices.validateFeature(feature, options).then(function(result) {
|
|
|
|
result && result.enableTimeLimit && startAutoStopTimer()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
function startAutoStopTimer() {
|
|
|
|
stopAutoStopTimer(), autoStopTimeout = setTimeout(onAutoStopTimeout, 63e3)
|
|
|
|
}
|
|
|
|
|
|
|
|
function onAutoStopTimeout() {
|
|
|
|
stopAutoStopTimer(), playbackManager.stop()
|
|
|
|
}
|
|
|
|
|
|
|
|
function stopAutoStopTimer() {
|
|
|
|
var timeout = autoStopTimeout;
|
|
|
|
timeout && (clearTimeout(timeout), autoStopTimeout = null)
|
|
|
|
}
|
|
|
|
|
|
|
|
function PlaybackValidation() {
|
|
|
|
this.name = "Playback validation", this.type = "preplayintercept", this.id = "playbackvalidation", this.order = -1
|
|
|
|
}
|
|
|
|
var autoStopTimeout;
|
|
|
|
return PlaybackValidation.prototype.intercept = function(options) {
|
|
|
|
return options.fullscreen ? options.item && itemHelper.isLocalItem(options.item) ? Promise.resolve() : validatePlayback(options) : Promise.resolve()
|
|
|
|
}, PlaybackValidation
|
|
|
|
});
|