1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00
jellyfin-web/dashboard-ui/scripts/registrationservices.js

211 lines
6.8 KiB
JavaScript
Raw Normal View History

define(['appStorage', 'shell'], function (appStorage, shell) {
2015-05-16 15:09:02 -04:00
2015-11-29 14:51:45 -05:00
var supporterPlaybackKey = 'lastSupporterPlaybackMessage4';
2015-05-17 21:27:48 -04:00
2015-12-30 15:25:17 -05:00
function validatePlayback(resolve, reject) {
2015-05-16 15:09:02 -04:00
2015-11-29 14:51:45 -05:00
Dashboard.getPluginSecurityInfo().then(function (pluginSecurityInfo) {
2015-05-16 15:09:02 -04:00
2015-07-27 01:03:34 -04:00
if (pluginSecurityInfo.IsMBSupporter) {
2015-12-30 15:25:17 -05:00
resolve();
2015-05-16 15:09:02 -04:00
} else {
2015-07-27 01:03:34 -04:00
var lastMessage = parseInt(appStorage.getItem(supporterPlaybackKey) || '0');
2015-05-16 15:09:02 -04:00
2015-07-27 01:03:34 -04:00
if (!lastMessage) {
// Don't show on the very first playback attempt
appStorage.setItem(supporterPlaybackKey, new Date().getTime());
2015-12-30 15:25:17 -05:00
resolve();
2015-05-16 15:09:02 -04:00
}
2016-03-02 13:42:39 -05:00
else if ((new Date().getTime() - lastMessage) > 259200000) {
2015-05-16 15:09:02 -04:00
2015-12-30 15:25:17 -05:00
showPlaybackOverlay(resolve, reject);
2015-07-27 01:03:34 -04:00
} else {
2015-12-30 15:25:17 -05:00
resolve();
2015-05-16 15:09:02 -04:00
}
}
2015-07-27 01:03:34 -04:00
});
}
2015-05-16 15:09:02 -04:00
2015-11-26 23:52:50 -05:00
function getSubscriptionBenefits() {
var list = [];
list.push({
name: Globalize.translate('CoverArt'),
icon: 'photo',
text: Globalize.translate('CoverArtFeatureDescription')
});
list.push({
name: Globalize.translate('HeaderFreeApps'),
icon: 'check',
text: Globalize.translate('FreeAppsFeatureDescription')
});
if (Dashboard.capabilities().SupportsSync) {
list.push({
name: Globalize.translate('HeaderMobileSync'),
icon: 'sync',
text: Globalize.translate('MobileSyncFeatureDescription')
});
}
else {
list.push({
name: Globalize.translate('HeaderCinemaMode'),
icon: 'movie',
text: Globalize.translate('CinemaModeFeatureDescription')
});
}
return list;
}
function getSubscriptionBenefitHtml(item) {
var html = '';
2016-08-05 16:34:56 -04:00
html += '<div class="listItem">';
2015-11-26 23:52:50 -05:00
2016-08-05 16:34:56 -04:00
html += '<i class="listItemIcon md-icon">' + item.icon + '</i>';
2015-11-26 23:52:50 -05:00
2016-08-05 16:34:56 -04:00
html += '<div class="listItemBody two-line">';
2015-11-26 23:52:50 -05:00
html += '<a class="clearLink" href="https://emby.media/premiere" target="_blank">';
2016-08-05 16:34:56 -04:00
html += '<h3 class="listItemBodyText">';
2015-11-26 23:52:50 -05:00
html += item.name;
2016-08-05 16:34:56 -04:00
html += '</h3>';
2015-11-26 23:52:50 -05:00
2016-08-05 16:34:56 -04:00
html += '<div class="listItemBodyText secondary" style="white-space:normal;">';
2015-11-26 23:52:50 -05:00
html += item.text;
html += '</div>';
html += '</a>';
2016-08-05 16:34:56 -04:00
html += '</div>';
2015-11-26 23:52:50 -05:00
2016-08-05 16:34:56 -04:00
html += '</div>';
2015-11-26 23:52:50 -05:00
return html;
}
2015-12-30 15:25:17 -05:00
function showPlaybackOverlay(resolve, reject) {
2015-05-16 15:09:02 -04:00
2016-08-05 16:34:56 -04:00
require(['dialogHelper', 'listViewStyle', 'emby-button'], function (dialogHelper) {
2015-07-27 01:03:34 -04:00
2016-03-23 15:03:17 -04:00
var dlg = dialogHelper.createDialog({
2016-06-18 16:31:22 -04:00
size: 'fullscreen-border',
removeOnClose: true
2016-01-30 15:59:09 -05:00
});
dlg.classList.add('ui-body-b');
dlg.classList.add('background-theme-b');
2015-07-27 01:03:34 -04:00
2015-11-29 14:51:45 -05:00
var html = '';
html += '<h2 class="dialogHeader">';
2016-08-05 16:34:56 -04:00
html += '<button is="emby-button" type="button" class="fab mini btnCancelSupporterInfo" tabindex="-1"><i class="md-icon">arrow_back</i></button>';
2015-11-29 14:51:45 -05:00
html += '</h2>';
2015-05-16 15:09:02 -04:00
2016-08-07 02:25:51 -04:00
html += '<div class="readOnlyContent" style="margin:0 auto 0;color:#fff;padding:0 1em 1em;">';
2015-05-16 15:09:02 -04:00
2015-11-29 14:51:45 -05:00
html += '<h1>' + Globalize.translate('HeaderTryEmbyPremiere') + '</h1>';
2015-05-16 15:09:02 -04:00
2015-11-29 14:51:45 -05:00
html += '<p>' + Globalize.translate('MessageDidYouKnowCinemaMode') + '</p>';
html += '<p>' + Globalize.translate('MessageDidYouKnowCinemaMode2') + '</p>';
2015-11-26 23:52:50 -05:00
2015-11-29 14:51:45 -05:00
html += '<br/>';
2015-11-26 23:52:50 -05:00
2015-11-29 14:51:45 -05:00
html += '<h1>' + Globalize.translate('HeaderBenefitsEmbyPremiere') + '</h1>';
2015-11-26 23:52:50 -05:00
2015-11-29 14:51:45 -05:00
html += '<div class="paperList">';
html += getSubscriptionBenefits().map(getSubscriptionBenefitHtml).join('');
html += '</div>';
2015-05-16 15:09:02 -04:00
2015-11-29 14:51:45 -05:00
html += '<br/>';
2016-06-18 16:31:22 -04:00
html += '<a class="clearLink" href="http://emby.media/premiere" target="_blank"><button is="emby-button" type="button" class="raised submit block" autoFocus><i class="md-icon">check</i><span>' + Globalize.translate('ButtonBecomeSupporter') + '</span></button></a>';
html += '<button is="emby-button" type="button" class="raised subdued block btnCancelSupporterInfo" style="background:#444;"><i class="md-icon">close</i><span>' + Globalize.translate('ButtonClosePlayVideo') + '</span></button>';
2015-05-16 15:09:02 -04:00
2015-11-29 14:51:45 -05:00
html += '</div>';
2015-05-16 15:09:02 -04:00
2015-11-29 14:51:45 -05:00
dlg.innerHTML = html;
document.body.appendChild(dlg);
2015-07-27 01:03:34 -04:00
2015-11-29 14:51:45 -05:00
// Has to be assigned a z-index after the call to .open()
2016-03-22 13:46:57 -04:00
dlg.addEventListener('close', function (e) {
2015-11-29 14:51:45 -05:00
appStorage.setItem(supporterPlaybackKey, new Date().getTime());
2015-12-30 15:25:17 -05:00
resolve();
2015-11-29 14:51:45 -05:00
});
2016-03-23 15:03:17 -04:00
dialogHelper.open(dlg);
2015-11-29 14:51:45 -05:00
2016-06-18 16:31:22 -04:00
var onCancelClick = function () {
2016-03-23 15:03:17 -04:00
dialogHelper.close(dlg);
2016-06-18 16:31:22 -04:00
};
var i, length;
var elems = dlg.querySelectorAll('.btnCancelSupporterInfo');
for (i = 0, length = elems.length; i < length; i++) {
elems[i].addEventListener('click', onCancelClick);
}
2015-07-27 01:03:34 -04:00
});
}
2015-12-30 15:25:17 -05:00
function validateSync(resolve, reject) {
2015-07-29 22:08:35 -04:00
2015-11-29 14:51:45 -05:00
Dashboard.getPluginSecurityInfo().then(function (pluginSecurityInfo) {
2015-07-29 22:08:35 -04:00
if (pluginSecurityInfo.IsMBSupporter) {
2015-12-30 15:25:17 -05:00
resolve();
2015-07-29 22:08:35 -04:00
return;
}
Dashboard.showLoadingMsg();
2015-11-29 14:51:45 -05:00
ApiClient.getRegistrationInfo('Sync').then(function (registrationInfo) {
2015-07-29 22:08:35 -04:00
Dashboard.hideLoadingMsg();
if (registrationInfo.IsRegistered) {
2015-12-30 15:25:17 -05:00
resolve();
2015-07-29 22:08:35 -04:00
return;
}
Dashboard.alert({
2015-10-01 12:28:24 -04:00
message: Globalize.translate('HeaderSyncRequiresSupporterMembership') + '<br/><p><a href="http://emby.media/premiere" target="_blank">' + Globalize.translate('ButtonLearnMore') + '</a></p>',
2015-12-14 10:43:03 -05:00
title: Globalize.translate('HeaderSync'),
2015-12-30 15:25:17 -05:00
callback: reject
2015-07-29 22:08:35 -04:00
});
2015-11-29 14:51:45 -05:00
}, function () {
2015-07-29 22:08:35 -04:00
2015-12-30 15:25:17 -05:00
reject();
2015-07-29 22:08:35 -04:00
Dashboard.hideLoadingMsg();
Dashboard.alert({
message: Globalize.translate('ErrorValidatingSupporterInfo')
});
});
});
}
2016-08-16 16:54:13 -04:00
return {
2015-07-27 01:03:34 -04:00
validateFeature: function (name) {
2015-05-22 15:16:14 -04:00
2015-12-30 15:25:17 -05:00
return new Promise(function (resolve, reject) {
if (name == 'playback') {
validatePlayback(resolve, reject);
} else if (name == 'livetv') {
resolve();
} else if (name == 'sync') {
validateSync(resolve, reject);
} else {
resolve();
}
});
},
showPremiereInfo: function () {
shell.openUrl('https://emby.media/premiere');
2015-07-27 01:03:34 -04:00
}
};
2016-03-07 14:13:58 -05:00
});