1 line
3.3 KiB
JavaScript
1 line
3.3 KiB
JavaScript
|
|
import globalize from"./../../common/globalize.js";import connectionManager from"./../../emby-apiclient/connectionmanager.js";import EmbyButton from"./../emby-button/emby-button.js";function showConfirm(options){return Emby.importModule("./modules/common/dialogs/confirm.js").then(function(confirm){return confirm(options)})}function onClick(e){let button=this,id=button.getAttribute("data-id"),serverId=button.getAttribute("data-serverid"),type=button.getAttribute("data-itemtype"),apiClient=connectionManager.getApiClient(serverId);button.classList.contains("downloadbutton-on")?showConfirm({text:globalize.translate("ConfirmRemoveDownload"),confirmText:globalize.translate("RemoveDownload"),cancelText:globalize.translate("KeepDownload"),primary:"cancel"}).then(function(){apiClient.cancelSyncItems([id]),button.dispatchEvent(new CustomEvent("download-cancel",{cancelable:!1}))}):Emby.importModule("./modules/sync/sync.js").then(function(syncDialog){syncDialog.showMenu({items:[{Id:id,Type:type,ServerId:serverId}],mode:"download",serverId:serverId}).then(function(){button.dispatchEvent(new CustomEvent("download",{cancelable:!1}))})})}function updateSyncStatus(button,status){let icon=button.iconElement;icon||(button.iconElement=button.querySelector("i"),icon=button.iconElement),null!=status?(button.classList.add("downloadbutton-on"),icon&&icon.classList.add("downloadbutton-icon-on")):(button.classList.remove("downloadbutton-on"),icon&&icon.classList.remove("downloadbutton-icon-on")),"Synced"===status?(button.classList.add("downloadbutton-complete"),icon&&icon.classList.add("downloadbutton-icon-complete")):(button.classList.remove("downloadbutton-complete"),icon&&icon.classList.remove("downloadbutton-icon-complete"));let text;text="Synced"===status?globalize.translate("Downloaded"):null!=status?globalize.translate("Downloading"):globalize.translate("Download");status=button.querySelector(".button-text");status&&(status.innerHTML=text),button.title=text,button.setAttribute("aria-label",text)}function clearEvents(button){button.removeEventListener("click",onClick)}function bindEvents(button){clearEvents(button),button.addEventListener("click",onClick)}function connectedCallback(){var itemId=this.getAttribute("data-id"),serverId=this.getAttribute("data-serverid");itemId&&serverId&&bindEvents(this)}function disconnectedCallback(){clearEvents(this),this.iconElement=null}function fetchAndUpdate(button,item){connectionManager.getApiClient(item).getSyncStatus(item).then(function(result){updateSyncStatus(button,result.Status)},function(){})}function setItem(item){(item?(this.setAttribute("data-id",item.Id),this.setAttribute("data-serverid",item.ServerId),this.setAttribute("data-itemtype",item.Type),fetchAndUpdate(this,item),bindEvents):(this.removeAttribute("data-id"),this.removeAttribute("data-serverid"),this.removeAttribute("data-itemtype"),clearEvents))(this)}class EmbyDownloadButton extends EmbyButton{constructor(){return super()}connectedCallback(){EmbyButton.prototype.connectedCallback.call(this),connectedCallback.call(this)}disconnectedCallback(){EmbyButton.prototype.disconnectedCallback.call(this),disconnectedCallback.call(this)}setItem(item){setItem.call(this,item)}}customElements.define("emby-downloadbutton",EmbyDownloadButton,{extends:"button"});export default EmbyDownloadButton;
|