1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00
jellyfin-web/src/bower_components/emby-webcomponents/playback/playbackvalidation.js

43 lines
1.7 KiB
JavaScript
Raw Normal View History

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
});