EmbyCrackedClient/web/components/medialibraryeditor/medialibraryeditor.js
2025-06-25 11:46:04 +08:00

1 line
No EOL
7.2 KiB
JavaScript

import globalize from"./../../modules/common/globalize.js";import layoutManager from"./../../modules/layoutmanager.js";import loading from"./../../modules/loading/loading.js";import dialogHelper from"./../../modules/dialoghelper/dialoghelper.js";import libraryoptionseditor from"./../libraryoptionseditor/libraryoptionseditor.js";import formHelper from"./../../modules/common/responsehelper.js";import listView from"./../../modules/listview/listview.js";import itemManager from"./../../modules/common/itemmanager/itemmanager.js";import"./../../modules/emby-elements/emby-scroller/emby-scroller.js";import"./../../modules/emby-elements/emby-button/emby-button.js";import"./../../modules/emby-elements/emby-button/paper-icon-button-light.js";import"./../../modules/emby-elements/emby-input/emby-input.js";import"./../../modules/emby-elements/emby-select/emby-select.js";import"./../../modules/emby-elements/emby-checkbox/emby-checkbox.js";import"./../../modules/emby-elements/emby-toggle/emby-toggle.js";import"./../../modules/emby-elements/emby-dialogclosebutton/emby-dialogclosebutton.js";import"./../../modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js";require(["flexStyles","formDialogStyle"]);let currentResolve,hasChanges,currentOptions;function showAlert(options){return Emby.importModule("./modules/common/dialogs/alert.js").then(function(alert){return alert(options)})}function addMediaLocation(page,path,networkSharePath,username,password){var virtualFolder=currentOptions.library,refreshAfterChange=currentOptions.refresh;ApiClient.addMediaPath(virtualFolder,{Path:path,NetworkPath:networkSharePath,Username:username,Password:password},refreshAfterChange).then(function(){hasChanges=!0,refreshLibraryFromServer(page)},function(){showAlert(globalize.translate("ErrorAddingMediaPathToVirtualFolder"))})}function updateMediaLocation(page,path,networkSharePath,username,password){var virtualFolder=currentOptions.library;ApiClient.updateMediaPath(virtualFolder,{Path:path,NetworkPath:networkSharePath,Username:username,Password:password}).then(function(){hasChanges=!0,refreshLibraryFromServer(page)},formHelper.handleErrorResponse)}function refreshLibraryFromServer(page){return ApiClient.getVirtualFolders().then(function(result){result=result.Items.filter(function(f){return f.ItemId===currentOptions.library.ItemId})[0];if(result)return currentOptions.library=result,renderLibrary(page,currentOptions)})}function getFolderItems(){var items=currentOptions.library.LibraryOptions.PathInfos.map(function(i,index){return{Type:"GenericListItem",Name:i.Path,CanDelete:!0,CanEdit:!0,Icon:"folder",DeleteType:"remove",ShortOverview:i.NetworkPath,OriginalItem:i}});return Promise.resolve({Items:items,TotalRecordCount:items.length})}function deleteFolder(options){let context=this,item=options.items[0],virtualFolder=currentOptions.library,refreshAfterChange=currentOptions.refresh;return options.deleteMessages={single:{text:globalize.translate("MessageConfirmRemoveMediaLocation"),title:globalize.translate("HeaderRemoveMediaLocation"),confirmText:globalize.translate("Remove")},plural:{text:globalize.translate("MessageConfirmRemoveMediaLocation"),title:globalize.translate("HeaderRemoveMediaLocation"),confirmText:globalize.translate("Remove")}},itemManager.showDeleteConfirmation(options).then(function(){return ApiClient.removeMediaPath(virtualFolder,item.OriginalItem.Path,refreshAfterChange).then(function(){hasChanges=!0,refreshLibraryFromServer(context)})})}function editFolder(items,options){items=items[0].OriginalItem;return showDirectoryBrowser(this,items.Path,items.NetworkPath)}function getFolderListOptions(items){return{renderer:listView,options:{moreButton:!1,defaultBackground:!1,action:layoutManager.tv?"menu":"edit",buttonCommands:["edit","delete"],fields:["Name","ShortOverview"],draggable:!1,dragReorder:!1,roundImage:!0,image:!1,multiSelect:!1,commandActions:{deleteItems:deleteFolder.bind(this),edit:editFolder.bind(this)}}}}function renderLibrary(page,options){options.library.LibraryOptions||(options.library.LibraryOptions={}),options.library.LibraryOptions.PathInfos||(options.library.LibraryOptions.PathInfos=[]),options.library.LibraryOptions.PathInfos.length||(options.library.LibraryOptions.PathInfos=options.library.Locations.map(function(p){return{Path:p}})),"boxsets"===options.library.CollectionType||"playlists"===options.library.CollectionType?page.querySelector(".folders").classList.add("hide"):page.querySelector(".folders").classList.remove("hide");let folderList=page.querySelector(".folderList");return folderList.waitForCustomElementUpgrade().then(function(){folderList.resume({refresh:!0})})}function onAddButtonClick(){showDirectoryBrowser(this.closest(".dlg-libraryeditor"))}function showDirectoryBrowser(context,originalPath,networkPath){return Emby.importModule("./modules/directorybrowser/directorybrowser.js").then(function(directoryBrowser){let picker=new directoryBrowser;return new Promise(function(resolve,reject){picker.show({enableNetworkSharePath:!0,enableLoginCredentials:!0,pathReadOnly:null!=originalPath,path:originalPath,networkSharePath:networkPath,callback:function(path,networkSharePath,username,password){path&&(originalPath?updateMediaLocation(context,originalPath,networkSharePath,username,password):addMediaLocation(context,path,networkSharePath,username,password)),picker.close(),resolve()}})})})}function onToggleAdvancedChange(){var dlg=this.closest(".dlg-libraryeditor");libraryoptionseditor.setAdvancedVisible(dlg.querySelector(".libraryOptions"),this.checked)}function initEditor(dlg,options){renderLibrary(dlg,options),dlg.querySelector(".btnAddFolder").addEventListener("click",onAddButtonClick),dlg.querySelector(".chkAdvanced").addEventListener("change",onToggleAdvancedChange),libraryoptionseditor.embed(dlg.querySelector(".libraryOptions"),options.library.CollectionType,options.library.LibraryOptions).then(function(){onToggleAdvancedChange.call(dlg.querySelector(".chkAdvanced"))})}function onDialogClosing(){var libraryOptions=libraryoptionseditor.getLibraryOptions(this.querySelector(".libraryOptions")),libraryOptions=Object.assign(currentOptions.library.LibraryOptions||{},libraryOptions);ApiClient.updateVirtualFolderOptions(currentOptions.library.ItemId,libraryOptions)}function onDialogClosed(){loading.hide(),hasChanges=!0,currentResolve(hasChanges)}function editor(){this.show=function(options){return new Promise(function(resolve,reject){currentResolve=resolve,currentOptions=options,hasChanges=!1;resolve=new XMLHttpRequest;resolve.open("GET","components/medialibraryeditor/medialibraryeditor.template.html",!0),resolve.onload=function(e){var template=this.response,dlg=dialogHelper.createDialog({size:layoutManager.tv?"fullscreen":"medium-tall",modal:!1,removeOnClose:!0,scrollY:!1}),template=(dlg.classList.add("dlg-libraryeditor"),dlg.classList.add("ui-body-a"),dlg.classList.add("background-theme-a"),dlg.classList.add("formDialog"),dlg.innerHTML=globalize.translateDocument(template),dlg.querySelector(".formDialogHeaderTitle").innerHTML=options.library.Name,initEditor(dlg,options),dlg.addEventListener("closing",onDialogClosing),dlg.addEventListener("close",onDialogClosed),dlg.querySelector(".folderList"));template.fetchData=getFolderItems.bind(dlg),template.getListOptions=getFolderListOptions.bind(dlg),dialogHelper.open(dlg),refreshLibraryFromServer(dlg)},resolve.send()})}}export default editor;