1 line
No EOL
9.1 KiB
JavaScript
1 line
No EOL
9.1 KiB
JavaScript
import BaseView from"./../modules/viewmanager/baseview.js";import loading from"./../modules/loading/loading.js";import globalize from"./../modules/common/globalize.js";import"./../modules/emby-elements/emby-button/emby-button.js";import"./../modules/emby-elements/emby-select/emby-select.js";import"./../modules/emby-elements/emby-scroller/emby-scroller.js";import"./../modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js";import{appHost}from"./../modules/common/servicelocator.js";import connectionManager from"./../modules/emby-apiclient/connectionmanager.js";import listView from"./../modules/listview/listview.js";import dom from"./../modules/dom.js";import textEncoding from"./../modules/common/textencoding.js";function showAlert(options){return Emby.importModule("./modules/common/dialogs/alert.js").then(function(alert){return alert(options)})}function showConfirm(options){return Emby.importModule("./modules/common/dialogs/confirm.js").then(function(confirm){return confirm(options)})}function populateVersions(packageInfo,page,installedPlugin){let html="";for(let i=0,length=packageInfo.versions.length;i<length;i++){var version=packageInfo.versions[i];html+='<option value="'+version.versionStr+"|"+version.classification+'">'+version.versionStr+" ("+version.classification+")</option>"}var selectmenu=page.querySelector(".selectVersion");selectmenu.innerHTML=html,installedPlugin||((installedPlugin=page.querySelector(".pCurrentVersion")).classList.add("hide"),installedPlugin.innerHTML="");let packageVersion=packageInfo.versions.filter(function(current){return"Release"===current.classification})[0];(packageVersion=packageVersion||packageInfo.versions.filter(function(current){return"Beta"===current.classification})[0])&&(page=packageVersion.versionStr+"|"+packageVersion.classification,selectmenu.value=page)}function renderPluginInfo(page,pkg,pluginSecurityInfo){if(appHost.supports("externalpremium"))if(pkg.isPremium){page.querySelector(".premiumPackage").classList.remove("hide");let regStatus="";var nowTime,expDateTime;pkg.isRegistered?regStatus=(regStatus+="<p style='color:green;'>")+globalize.translate("MessageFeatureIncludedWithSupporter"):(expDateTime=new Date(pkg.expDate).getTime())<=(nowTime=Date.now())?regStatus=(regStatus+="<p style='color:red;'>")+globalize.translate("MessageTrialExpired"):expDateTime>new Date(1970,1,1).getTime()&&(regStatus=(regStatus+="<p style='color:blue;'>")+globalize.translate("MessageTrialWillExpireIn").replace("{0}",Math.round(expDateTime-nowTime)/864e5)),regStatus+="</p>",page.querySelector(".regStatus").innerHTML=regStatus,pluginSecurityInfo.IsMBSupporter?(page.querySelector(".premiumDescription").classList.add("hide"),page.querySelector(".supporterDescription").classList.add("hide"),0<pkg.price?(page.querySelector(".premiumHasPrice").classList.remove("hide"),page.querySelector(".featureId").value=pkg.featureId,page.querySelector(".featureName").value=pkg.name,page.querySelector(".amount").value=pkg.price,page.querySelector(".regPrice").innerHTML="<h3>"+globalize.translate("ValuePriceUSD").replace("{0}",pkg.price.toFixed(2))+"</h3>",page.querySelector(".ppButton").classList.add("hide"),expDateTime="https://mb3admin.com/admin/service/user/getPayPalEmail?id="+pkg.owner,fetch(expDateTime).then(function(response){return response.json()}).then(function(dev){dev.payPalEmail&&(page.querySelector(".payPalEmail").value=dev.payPalEmail,page.querySelector(".ppButton").classList.remove("hide"))})):page.querySelector(".premiumHasPrice").classList.add("hide")):(pkg.price?(page.querySelector(".premiumDescription").classList.remove("hide"),page.querySelector(".supporterDescription").classList.add("hide")):(page.querySelector(".premiumDescription").classList.add("hide"),page.querySelector(".supporterDescription").classList.remove("hide")),page.querySelector(".ppButton").classList.add("hide"))}else page.querySelector(".premiumPackage").classList.add("hide")}function renderPackage(pkg,installedPlugins,pluginSecurityInfo,page){installedPlugins=installedPlugins.filter(function(ip){return(ip.Id||"").toLowerCase()===(pkg.guid||"").toLowerCase()})[0];populateVersions(pkg,page,installedPlugins),page.querySelector(".pluginName").innerHTML=textEncoding.htmlEncode(pkg.name||""),"Server"===pkg.targetSystem&&(page.querySelector(".btnInstallDiv").classList.remove("hide"),page.querySelector(".nonServerMsg").classList.add("hide"),page.querySelector(".pSelectVersion").classList.remove("hide")),pkg.shortDescription?(page.querySelector(".tagline").classList.remove("hide"),page.querySelector(".tagline").innerHTML=textEncoding.htmlEncode(pkg.shortDescription||"")):page.querySelector(".tagline").classList.add("hide"),page.querySelector(".overview").innerHTML=dom.stripScripts(pkg.overview||"");let owner=pkg.owner;"luke"!==owner&&"ebr"!==owner||(owner="Emby"),page.querySelector(".developer").innerHTML=textEncoding.htmlEncode(owner||""),renderPluginInfo(page,pkg,pluginSecurityInfo),pkg.richDescUrl?(page.querySelector(".pViewWebsite").classList.remove("hide"),page.querySelector(".pViewWebsite a").setAttribute("href",pkg.richDescUrl)):page.querySelector(".pViewWebsite").classList.add("hide"),pkg.previewImage||pkg.thumbImage?(pluginSecurityInfo=pkg.previewImage||pkg.thumbImage,page.querySelector(".pPreviewImage").classList.remove("hide"),page.querySelector(".pPreviewImage").innerHTML="<img class='pluginPreviewImg' src='"+pluginSecurityInfo+"' style='max-width: 100%;' />"):(page.querySelector(".pPreviewImage").classList.add("hide"),page.querySelector(".pPreviewImage").innerHTML=""),installedPlugins?(pluginSecurityInfo=globalize.translate("LabelVersionInstalled").replace("{0}","<strong>"+installedPlugins.Version+"</strong>"),page.querySelector(".pCurrentVersion").classList.remove("hide"),page.querySelector(".pCurrentVersion").innerHTML=pluginSecurityInfo):(page.querySelector(".pCurrentVersion").classList.add("hide"),page.querySelector(".pCurrentVersion").innerHTML=""),loading.hide()}function performInstallation(page,apiClient,packageName,guid,updateClass,version){function alertCallback(){loading.show(),page.querySelector(".btnInstall").disabled=!0,apiClient.installPlugin(packageName,guid,updateClass,version).then(function(){loading.hide(),showAlert(globalize.translate("PluginInstalledMessage"))})}var developer=page.querySelector(".developer").innerHTML.toLowerCase();"luke"!==developer&&"ebr"!==developer&&"softworkz"!==developer&&"emby"!==developer?(loading.hide(),showConfirm(globalize.translate("MessagePluginInstallDisclaimer")+"<br/>"+"<br/>"+globalize.translate("PleaseConfirmPluginInstallation"),globalize.translate("HeaderConfirmPluginInstallation")).then(alertCallback)):alertCallback()}function getRevisionItems(query){let serverId=this.getApiClient().serverId(),items=this.pkg?.versions||[];var totalRecordCount=items.length;return query?.StartIndex&&(items=items.slice(query.StartIndex)),null!=query?.Limit&&(items.length=Math.min(items.length,query.Limit)),Promise.resolve({TotalRecordCount:totalRecordCount,Items:items.map(function(version){return{Type:"GenericListItem",ServerId:serverId,Name:version.versionStr,ShortOverview:version.description,Icon:"published_with_changes",DateCreated:version.timestamp}})})}function getRevisionListOptions(items){return{renderer:listView,options:{fields:["Name","DateCreated","ShortOverview"],enableDefaultIcon:!0,action:"none",draggable:!1,multiSelect:!1,contextMenu:!1,mediaInfo:!1,largeHeading:!0,roundImage:!0},virtualScrollLayout:"vertical-list"}}function View(view,params){BaseView.apply(this,arguments);let instance=this;view.querySelector(".addPluginForm").addEventListener("submit",function(e){loading.show();let page=this.closest(".page"),name=params.name,guid=params.guid,apiClient=instance.getApiClient();return apiClient.getInstalledPlugins().then(function(plugins){var vals=page.querySelector(".selectVersion").value.split("|"),version=vals[0];performInstallation(page,apiClient,name,guid,vals[1],version)}),e.preventDefault(),e.stopPropagation(),!1});view=view.querySelector(".revisionHistory");view.fetchData=getRevisionItems.bind(this),view.getListOptions=getRevisionListOptions.bind(this),this.revisionHistoryItemsContainer=view}require(["css!plugins/addpluginpage.css"]),Object.assign(View.prototype,BaseView.prototype),View.prototype.onResume=function(options){BaseView.prototype.onResume.apply(this,arguments);let page=this.view;loading.show();var params=this.params,name=params.name,params=params.guid;let apiClient=this.getApiClient();name=apiClient.getPackageInfo(name,params),params=apiClient.getInstalledPlugins();connectionManager.getRegistrationInfo("themes",apiClient,{viewOnly:!0});let instance=this;Promise.all([name,params]).then(function(responses){instance.pkg=responses[0],connectionManager.getRegistrationInfo("themes",apiClient,{viewOnly:!0}).then(function(){instance.revisionHistoryItemsContainer.resume(options),renderPackage(responses[0],responses[1],{IsMBSupporter:!0},page)},function(){renderPackage(responses[0],responses[1],{},page)})})},View.prototype.onPause=function(){BaseView.prototype.onPause.apply(this,arguments),this.revisionHistoryItemsContainer.pause()},View.prototype.destroy=function(){BaseView.prototype.destroy.apply(this,arguments),this.revisionHistoryItemsContainer=null,this.pkg=null};export default View; |