define(['appStorage', 'shell'], function (appStorage, shell) { var supporterPlaybackKey = 'lastSupporterPlaybackMessage4'; function validatePlayback(resolve, reject) { Dashboard.getPluginSecurityInfo().then(function (pluginSecurityInfo) { if (pluginSecurityInfo.IsMBSupporter) { resolve(); } else { var lastMessage = parseInt(appStorage.getItem(supporterPlaybackKey) || '0'); if (!lastMessage) { // Don't show on the very first playback attempt appStorage.setItem(supporterPlaybackKey, new Date().getTime()); resolve(); } else if ((new Date().getTime() - lastMessage) > 259200000) { showPlaybackOverlay(resolve, reject); } else { resolve(); } } }); } 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 = ''; html += '
'; html += '' + item.icon + ''; html += '
'; html += ''; html += '

'; html += item.name; html += '

'; html += '
'; html += item.text; html += '
'; html += '
'; html += '
'; html += '
'; return html; } function showPlaybackOverlay(resolve, reject) { require(['dialogHelper', 'listViewStyle', 'emby-button'], function (dialogHelper) { var dlg = dialogHelper.createDialog({ size: 'fullscreen-border', removeOnClose: true }); dlg.classList.add('ui-body-b'); dlg.classList.add('background-theme-b'); var html = ''; html += '

'; html += ''; html += '

'; html += '
'; html += '

' + Globalize.translate('HeaderTryEmbyPremiere') + '

'; html += '

' + Globalize.translate('MessageDidYouKnowCinemaMode') + '

'; html += '

' + Globalize.translate('MessageDidYouKnowCinemaMode2') + '

'; html += '
'; html += '

' + Globalize.translate('HeaderBenefitsEmbyPremiere') + '

'; html += '
'; html += getSubscriptionBenefits().map(getSubscriptionBenefitHtml).join(''); html += '
'; html += '
'; html += ''; html += ''; html += '
'; dlg.innerHTML = html; document.body.appendChild(dlg); // Has to be assigned a z-index after the call to .open() dlg.addEventListener('close', function (e) { appStorage.setItem(supporterPlaybackKey, new Date().getTime()); resolve(); }); 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 validateSync(resolve, reject) { Dashboard.getPluginSecurityInfo().then(function (pluginSecurityInfo) { if (pluginSecurityInfo.IsMBSupporter) { resolve(); return; } Dashboard.showLoadingMsg(); ApiClient.getRegistrationInfo('Sync').then(function (registrationInfo) { Dashboard.hideLoadingMsg(); if (registrationInfo.IsRegistered) { resolve(); return; } Dashboard.alert({ message: Globalize.translate('HeaderSyncRequiresSupporterMembership') + '

' + Globalize.translate('ButtonLearnMore') + '

', title: Globalize.translate('HeaderSync'), callback: reject }); }, function () { reject(); Dashboard.hideLoadingMsg(); Dashboard.alert({ message: Globalize.translate('ErrorValidatingSupporterInfo') }); }); }); } return { validateFeature: function (name) { 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'); } }; });