2019-01-10 15:39:37 +03:00
|
|
|
define(['connectionManager', 'globalize', 'userSettings', 'apphost'], function (connectionManager, globalize, userSettings, appHost) {
|
2018-10-23 01:05:09 +03:00
|
|
|
"use strict";
|
|
|
|
|
2019-01-10 15:39:37 +03:00
|
|
|
function getRequirePromise(deps) {
|
|
|
|
|
|
|
|
return new Promise(function (resolve, reject) {
|
|
|
|
|
|
|
|
require(deps, resolve);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// https://stackoverflow.com/questions/6117814/get-week-of-year-in-javascript-like-in-php
|
2018-10-23 01:05:09 +03:00
|
|
|
function getWeek(date) {
|
2019-01-10 15:39:37 +03:00
|
|
|
var d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
|
|
|
|
var dayNum = d.getUTCDay() || 7;
|
2018-10-23 01:05:09 +03:00
|
|
|
d.setUTCDate(d.getUTCDate() + 4 - dayNum);
|
|
|
|
var yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
|
2019-01-10 15:39:37 +03:00
|
|
|
return Math.ceil((((d - yearStart) / 86400000) + 1) / 7);
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function showMessage(text, userSettingsKey, appHostFeature) {
|
2019-01-10 15:39:37 +03:00
|
|
|
|
|
|
|
if (appHost.supports(appHostFeature)) {
|
|
|
|
return Promise.resolve();
|
|
|
|
}
|
|
|
|
|
|
|
|
var now = new Date();
|
|
|
|
|
|
|
|
userSettingsKey += now.getFullYear() + '-w' + getWeek(now);
|
|
|
|
|
|
|
|
if (userSettings.get(userSettingsKey, false) === '1') {
|
|
|
|
return Promise.resolve();
|
|
|
|
}
|
|
|
|
|
|
|
|
return new Promise(function (resolve, reject) {
|
|
|
|
|
|
|
|
userSettings.set(userSettingsKey, '1', false);
|
|
|
|
|
|
|
|
require(['alert'], function (alert) {
|
|
|
|
|
|
|
|
return alert(text).then(resolve, resolve);
|
|
|
|
});
|
|
|
|
});
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function showBlurayMessage() {
|
2020-04-16 20:38:48 -04:00
|
|
|
return showMessage(globalize.translate("UnsupportedPlayback"), 'blurayexpirementalinfo', 'nativeblurayplayback');
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function showDvdMessage() {
|
2020-04-16 20:39:00 -04:00
|
|
|
return showMessage(globalize.translate("UnsupportedPlayback"), 'dvdexpirementalinfo', 'nativedvdplayback');
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function showIsoMessage() {
|
2020-04-04 13:25:35 +02:00
|
|
|
return showMessage(globalize.translate("ExperimentalISOPlayback"), 'isoexpirementalinfo', 'nativeisoplayback');
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function ExpirementalPlaybackWarnings() {
|
2019-01-10 15:39:37 +03:00
|
|
|
|
|
|
|
this.name = 'Experimental playback warnings';
|
|
|
|
this.type = 'preplayintercept';
|
|
|
|
this.id = 'expirementalplaybackwarnings';
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
2019-01-10 15:39:37 +03:00
|
|
|
|
|
|
|
ExpirementalPlaybackWarnings.prototype.intercept = function (options) {
|
|
|
|
|
2018-10-23 01:05:09 +03:00
|
|
|
var item = options.item;
|
2019-01-10 15:39:37 +03:00
|
|
|
if (!item) {
|
|
|
|
return Promise.resolve();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (item.VideoType === 'Iso') {
|
|
|
|
return showIsoMessage();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (item.VideoType === 'BluRay') {
|
|
|
|
return showBlurayMessage();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (item.VideoType === 'Dvd') {
|
|
|
|
return showDvdMessage();
|
|
|
|
}
|
|
|
|
|
|
|
|
return Promise.resolve();
|
|
|
|
};
|
|
|
|
|
|
|
|
return ExpirementalPlaybackWarnings;
|
2020-02-22 11:47:03 -05:00
|
|
|
});
|