mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update recording dialogs
This commit is contained in:
parent
bdfd870584
commit
141344eead
60 changed files with 546 additions and 211 deletions
|
@ -24,13 +24,131 @@
|
|||
});
|
||||
}
|
||||
|
||||
function showPeriodicMessage(feature, settingsKey) {
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
appSettings.set(settingsKey, new Date().getTime());
|
||||
|
||||
require(['listViewStyle', 'emby-button', 'formDialogStyle'], function () {
|
||||
|
||||
var dlg = dialogHelper.createDialog({
|
||||
size: 'fullscreen-border',
|
||||
removeOnClose: true,
|
||||
scrollY: false
|
||||
});
|
||||
|
||||
dlg.classList.add('formDialog');
|
||||
|
||||
var html = '';
|
||||
html += '<div class="formDialogHeader">';
|
||||
html += '<button is="paper-icon-button-light" class="btnCancelSupporterInfo autoSize" tabindex="-1"><i class="md-icon"></i></button>';
|
||||
html += '<h3 class="formDialogHeaderTitle">';
|
||||
html += '</h3>';
|
||||
html += '</div>';
|
||||
|
||||
|
||||
html += '<div class="formDialogContent smoothScrollY">';
|
||||
html += '<div class="dialogContentInner dialog-content-centered">';
|
||||
|
||||
html += '<h1>' + globalize.translate('sharedcomponents#HeaderDiscoverEmbyPremiere') + '</h1>';
|
||||
|
||||
html += '<p>' + globalize.translate('sharedcomponents#MessageDidYouKnowCinemaMode') + '</p>';
|
||||
html += '<p>' + globalize.translate('sharedcomponents#MessageDidYouKnowCinemaMode2') + '</p>';
|
||||
|
||||
html += '<h1 style="margin-top:1.5em;">' + globalize.translate('sharedcomponents#HeaderBenefitsEmbyPremiere') + '</h1>';
|
||||
|
||||
html += '<div class="paperList">';
|
||||
html += getSubscriptionBenefits().map(getSubscriptionBenefitHtml).join('');
|
||||
html += '</div>';
|
||||
|
||||
html += '<br/>';
|
||||
|
||||
html += '<div class="formDialogFooter">';
|
||||
html += '<button is="emby-button" type="button" class="raised button-submit block btnGetPremiere formDialogFooterItem" autoFocus><span>' + globalize.translate('sharedcomponents#HeaderBecomeProjectSupporter') + '</span></button>';
|
||||
html += '<button is="emby-button" type="button" class="raised button-cancel block btnCancelSupporterInfo formDialogFooterItem"><span>' + globalize.translate('sharedcomponents#HeaderPlayMyMedia') + '</span></button>';
|
||||
html += '</div>';
|
||||
|
||||
html += '</div>';
|
||||
html += '</div>';
|
||||
|
||||
dlg.innerHTML = html;
|
||||
|
||||
if (layoutManager.tv) {
|
||||
centerFocus(dlg.querySelector('.formDialogContent'), false, true);
|
||||
}
|
||||
|
||||
// Has to be assigned a z-index after the call to .open()
|
||||
dlg.addEventListener('close', function (e) {
|
||||
if (layoutManager.tv) {
|
||||
centerFocus(dlg.querySelector('.formDialogContent'), false, false);
|
||||
}
|
||||
|
||||
appSettings.set(settingsKey, new Date().getTime());
|
||||
resolve();
|
||||
});
|
||||
|
||||
dlg.querySelector('.btnGetPremiere').addEventListener('click', showPremiereInfo);
|
||||
|
||||
dialogHelper.open(dlg);
|
||||
|
||||
var onCancelClick = function () {
|
||||
dialogHelper.close(dlg);
|
||||
};
|
||||
var i, length;
|
||||
var elems = dlg.querySelectorAll('.btnCancelSupporterInfo');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener('click', onCancelClick);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function showPeriodicMessageIfNeeded(feature) {
|
||||
var intervalMs = iapManager.getPeriodicMessageIntervalMs(feature);
|
||||
if (intervalMs <= 0) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
var settingsKey = 'periodicmessage-' + feature;
|
||||
var lastMessage = parseInt(appSettings.get(settingsKey) || '0');
|
||||
|
||||
if (!lastMessage) {
|
||||
|
||||
// Don't show on the very first playback attempt
|
||||
appSettings.set(settingsKey, new Date().getTime());
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
if ((new Date().getTime() - lastMessage) > intervalMs) {
|
||||
|
||||
connectionManager.currentApiClient().getPluginSecurityInfo().then(function (regInfo) {
|
||||
|
||||
if (regInfo.IsMBSupporter) {
|
||||
appSettings.set(settingsKey, new Date().getTime());
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
return showPeriodicMessage(feature, settingsKey);
|
||||
}, function () {
|
||||
return showPeriodicMessage(feature, settingsKey);
|
||||
});
|
||||
}
|
||||
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
function validateFeature(feature, options) {
|
||||
|
||||
options = options || {};
|
||||
|
||||
console.log('validateFeature: ' + feature);
|
||||
|
||||
return iapManager.isUnlockedByDefault(feature).catch(function () {
|
||||
return iapManager.isUnlockedByDefault(feature).then(function () {
|
||||
|
||||
return showPeriodicMessageIfNeeded(feature);
|
||||
|
||||
}, function () {
|
||||
|
||||
var unlockableFeatureCacheKey = 'featurepurchased-' + feature;
|
||||
if (appSettings.get(unlockableFeatureCacheKey) == '1') {
|
||||
|
@ -157,8 +275,9 @@
|
|||
html += '</p>';
|
||||
|
||||
var hasProduct = false;
|
||||
var i, length;
|
||||
|
||||
for (var i = 0, length = subscriptionOptions.length; i < length; i++) {
|
||||
for (i = 0, length = subscriptionOptions.length; i < length; i++) {
|
||||
|
||||
hasProduct = true;
|
||||
html += '<p>';
|
||||
|
@ -205,7 +324,6 @@
|
|||
dlg.innerHTML = html;
|
||||
document.body.appendChild(dlg);
|
||||
|
||||
var i, length;
|
||||
var btnPurchases = dlg.querySelectorAll('.btnPurchase');
|
||||
for (i = 0, length = btnPurchases.length; i < length; i++) {
|
||||
btnPurchases[i].addEventListener('click', onPurchaseButtonClick);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue