define(['appStorage', 'jQuery'], function (appStorage, $) { 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 if (AppInfo.isNativeApp) { list.push({ name: Globalize.translate('HeaderCloudSync'), icon: 'sync', text: Globalize.translate('CloudSyncFeatureDescription') }); } else { list.push({ name: Globalize.translate('HeaderCinemaMode'), icon: 'movie', text: Globalize.translate('CinemaModeFeatureDescription') }); } return list; } function getSubscriptionBenefitHtml(item) { var html = ''; html += ''; html += ''; html += ''; html += ''; html += '
'; html += item.name; html += '
'; html += '
'; html += item.text; html += '
'; html += '
'; html += '
'; html += '
'; return html; } function showPlaybackOverlay(resolve, reject) { require(['dialogHelper', 'paper-fab', 'paper-item-body', 'paper-icon-item', 'paper-button'], function (dialogHelper) { var dlg = dialogHelper.createDialog({ size: 'fullscreen-border' }); dlg.classList.add('ui-body-b'); dlg.classList.add('background-theme-b'); dlg.classList.add('popupEditor'); 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 += '' + Globalize.translate('ButtonBecomeSupporter') + ''; html += '' + Globalize.translate('ButtonClosePlayVideo') + ''; 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()); dlg.parentNode.removeChild(dlg); resolve(); }); dialogHelper.open(dlg); $('.btnCancelSupporterInfo').on('click', function () { dialogHelper.close(dlg); }); }); } 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') }); }); }); } window.RegistrationServices = { renderPluginInfo: function (page, pkg, pluginSecurityInfo) { if (pkg.isPremium) { $('.premiumPackage', page).show(); // Fill in registration info var regStatus = ""; if (pkg.isRegistered) { regStatus += "

"; regStatus += Globalize.translate('MessageFeatureIncludedWithSupporter'); } else { var expDateTime = new Date(pkg.expDate).getTime(); var nowTime = new Date().getTime(); if (expDateTime <= nowTime) { regStatus += "

"; regStatus += Globalize.translate('MessageTrialExpired'); } else if (expDateTime > new Date(1970, 1, 1).getTime()) { regStatus += "

"; regStatus += Globalize.translate('MessageTrialWillExpireIn').replace('{0}', Math.round(expDateTime - nowTime) / (86400000)); } } regStatus += "

"; $('#regStatus', page).html(regStatus); if (pluginSecurityInfo.IsMBSupporter) { $('#regInfo', page).html(pkg.regInfo || ""); $('.premiumDescription', page).hide(); $('.supporterDescription', page).hide(); if (pkg.price > 0) { $('.premiumHasPrice', page).show(); $('#featureId', page).val(pkg.featureId); $('#featureName', page).val(pkg.name); $('#amount', page).val(pkg.price); $('#regPrice', page).html("

" + Globalize.translate('ValuePriceUSD').replace('{0}', "$" + pkg.price.toFixed(2)) + "

"); $('#ppButton', page).hide(); var url = "https://mb3admin.com/admin/service/user/getPayPalEmail?id=" + pkg.owner; fetch(url).then(function (response) { return response.json(); }).then(function (dev) { if (dev.payPalEmail) { $('#payPalEmail', page).val(dev.payPalEmail); $('#ppButton', page).show(); } }); } else { // Supporter-only feature $('.premiumHasPrice', page).hide(); } } else { if (pkg.price) { $('.premiumDescription', page).show(); $('.supporterDescription', page).hide(); $('#regInfo', page).html(""); } else { $('.premiumDescription', page).hide(); $('.supporterDescription', page).show(); $('#regInfo', page).html(""); } $('#ppButton', page).hide(); } } else { $('.premiumPackage', page).hide(); } }, 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(); } }); } }; return window.RegistrationServices; });