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

1 line
No EOL
26 KiB
JavaScript

import dom from"./dom.js";import globalize from"./common/globalize.js";import loading from"./loading/loading.js";import appRouter from"./approuter.js";import playbackManager from"./common/playback/playbackmanager.js";import playbackActions from"./common/playback/playbackactions.js";import connectionManager from"./emby-apiclient/connectionmanager.js";import itemManager from"./common/itemmanager/itemmanager.js";import responseHelper from"./common/responsehelper.js";import{appLogger}from"./common/servicelocator.js";function showPrompt(options){return Emby.importModule("./modules/prompt/prompt.js").then(function(prompt){return prompt(options)})}function showAlert(options){return Emby.importModule("./modules/common/dialogs/alert.js").then(function(alert){return alert(options)})}function showAlertAndResolve(options){return showAlert(options).catch(function(){return Promise.resolve()})}function showConfirm(options){return Emby.importModule("./modules/common/dialogs/confirm.js").then(function(confirm){return confirm(options)})}function downloadFiles(urls){return Emby.importModule("./modules/multidownload.js").then(function(multiDownload){multiDownload(urls)})}function downloadRemoteSubtitle(item,options,apiClient){return loading.show(),apiClient.downloadSubtitles(item.ItemId,item.MediaSourceId,item.Id).then(function(result){return loading.hide(),showToast(globalize.translate("SubtitlesDownloaded")),result})}function downloadAppLog(item){return appLogger.downloadLog(item.Name)}function downloadItems(items,options){var apiClient=connectionManager.getApiClient(items[0]);if(options=options||{},"RemoteSubtitle"===items[0].Type)return downloadRemoteSubtitle(items[0],options,apiClient);var downloadUrls=[];for(let i=0,length=items.length;i<length;i++){var url,item=items[i];"Log"===item.Type?item.ServerId?downloadUrls.push(apiClient.getLogDownloadUrl({Name:item.Name,Sanitize:!1!==options.Sanitize,SetFilename:!0})):downloadAppLog(item):"MediaStream"===item.Type&&"Subtitle"===item.StreamType?(url="Videos/"+item.ItemId+"/"+item.MediaSourceId+"/Subtitles/"+item.Index+"/Stream."+item.Codec,downloadUrls.push(apiClient.getUrl(url,{SetFilename:!0}))):(url=options.mediaSourceId,item=apiClient.getItemDownloadUrl(item.Id,url),downloadUrls.push(item))}return downloadFiles(downloadUrls)}function resetMetadata(items,options){return require(["itemIdentifier"]).then(function(responses){return responses[0].resetMetadata(items)})}function identifyItem(item){return require(["itemIdentifier"]).then(function(responses){return responses[0].show(item)})}function previewItem(item){var apiClient=connectionManager.getApiClient(item);let url;return url="RemoteSubtitle"===item.Type?apiClient.getUrl("Providers/Subtitles/Subtitles/"+item.Id):apiClient.getUrl("Videos/"+item.ItemId+"/"+item.MediaSourceId+"/Subtitles/"+item.Index+"/Stream."+item.Codec),apiClient.getText(url).then(function(result){return showAlertAndResolve({preFormattedText:dom.stripScripts(result),confirmButton:!1,title:globalize.translate("Subtitles"),item:item})})}function removeFromResume(items,options,mode){var item=items[0],confirmHeader="Audio"===item.MediaType?globalize.translate("HeaderRemoveFromContinueListening"):globalize.translate("HeaderRemoveFromContinueWatching");let apiClient=connectionManager.getApiClient(item);return showConfirm({title:confirmHeader,text:"Audio"===item.MediaType?globalize.translate("RemoveThisTitleFromContinueListening"):globalize.translate("RemoveThisTitleFromContinueWatching"),confirmText:globalize.translate("Remove"),primary:"cancel"}).then(function(){return apiClient.updateHideFromResume(items.map(mapToId),!0)})}function mapToId(i){return i.Id}function markPlayed(items,options){var apiClient=connectionManager.getApiClient(items[0]);return apiClient.markPlayed(apiClient.getCurrentUserId(),items.map(mapToId))}function markUnplayed(items,options){var apiClient=connectionManager.getApiClient(items[0]);return apiClient.markUnplayed(apiClient.getCurrentUserId(),items.map(mapToId))}function markFavorite(items,isFavorite){var apiClient=connectionManager.getApiClient(items[0]);return apiClient.updateFavoriteStatus(apiClient.getCurrentUserId(),items.map(mapToId),isFavorite).then(function(){showToast(isFavorite?{text:globalize.translate("Favorited"),icon:"&#xe87D;"}:{text:globalize.translate("Unfavorited"),icon:"&#xe87D;",iconStrikeThrough:!0})})}function playTrailer(item){var apiClient=connectionManager.getApiClient(item);return apiClient.getLocalTrailers(apiClient.getCurrentUserId(),item.Id).then(function(trailers){playbackManager.play({items:trailers})})}function connectToServer(item){return"AddServer"===item.Type||"Downloads"===item.Type?appRouter.showItem(item):"EmbyConnect"===item.Type?appRouter.showConnectLogin():(loading.show(),item=connectionManager.getServerInfo(item.Id)||item,connectionManager.connectToServer(item,{}).then(function(result){return appRouter.handleConnectionResult(result)}))}function showMultiSelect(item,options){return options.positionTo.closest(".itemsContainer").showMultiSelect(options.positionTo,!0),Promise.resolve()}function afterWakeAttempt(){let apiClient=this;return setTimeoutPromise(12e3).then(function(){return apiClient.getPublicSystemInfo()})}function wakeServer(apiClient,item){return require(["loadingDialog"]).then(function(responses){var responses=new responses[0]({title:globalize.translate("HeaderWakeServer"),text:globalize.translate("AttemptingWakeServer")}),showDialogPromise=responses.show(),responses={dlg:responses,showDialogPromise:showDialogPromise},showDialogPromise=afterWakeAttempt.bind(apiClient);return apiClient.wakeOnLan().then(showDialogPromise,showDialogPromise).then(onWolSuccess.bind(responses),onWolFail.bind(responses))})}function setTimeoutPromise(timeMs){return new Promise(function(resolve,reject){setTimeout(resolve,timeMs)})}function onWolSuccess(){var promise=this.showDialogPromise.then(function(){return showAlertAndResolve({text:globalize.translate("WakeServerSuccess"),title:globalize.translate("HeaderWakeServer")})}),dlg=this.dlg;return dlg.hide(),dlg.destroy(),promise}function onWolFail(){var promise=this.showDialogPromise.then(function(){return showAlertAndResolve({text:globalize.translate("WakeServerError"),title:globalize.translate("HeaderWakeServer")})}),dlg=this.dlg;return dlg.hide(),dlg.destroy(),promise}let QueueQueryLimit=5e3;function playAllFromHereFoldersContext(item,queue,itemsContainer){let queryOptions={};return queryOptions.StartItemId=item.Id,queryOptions.Recursive=!0,queryOptions.IsFolder=!1,queryOptions.Limit=0,itemsContainer.fetchData(queryOptions).then(function(result){let itemStartIndex=result.TotalRecordCount;return queryOptions.StartIndex=0,queryOptions.Limit=QueueQueryLimit+itemStartIndex,queryOptions.StartItemId=null,itemsContainer.fetchData(queryOptions).then(function(result){var startIndex=itemStartIndex?Math.max(result.TotalRecordCount-itemStartIndex,0):0;return queue?playbackManager.queue({items:(result.Items||result).slice(startIndex)}):playbackActions.play({items:result.Items||result,startIndex:startIndex})})})}function playAllFromHere(itemElement,serverId,queue,autoAdvancePhotos){var itemsContainer=itemElement.closest(".itemsContainer");let startIndex=itemsContainer.indexOfElement(itemElement);if(itemsContainer&&itemsContainer.fetchData){if("folders"===itemsContainer.currentListOptions?.options.context){var item=itemsContainer.getItemFromElement(itemElement);if(item&&connectionManager.getApiClient(item)?.isMinServerVersion("4.8.0.59"))return playAllFromHereFoldersContext(item,queue,itemsContainer)}let limit=QueueQueryLimit,fetchAll=(queue||(limit+=startIndex||0),!queue&&startIndex<limit);item=fetchAll?{Limit:limit}:{StartIndex:startIndex,Limit:limit};return itemsContainer.fetchData(item).then(function(result){return queue?playbackManager.queue({items:result.Items||result}):playbackActions.play({items:result.Items||result,startIndex:fetchAll?startIndex:null,autoplay:autoAdvancePhotos})})}var itemsContainer=itemElement.parentNode,item=itemElement.classList.length?"."+itemElement.classList[0]:"",cards=itemsContainer.querySelectorAll(item+"[data-id]"),ids=[];let foundCard=!1;for(let i=0,length=cards.length;i<length;i++)cards[i]===itemElement&&(foundCard=!0,startIndex=i),!foundCard&&queue||ids.push(cards[i].getAttribute("data-id"));if(ids.length)return queue?playbackManager.queue({ids:ids,serverId:serverId}):playbackActions.play({ids:ids,serverId:serverId,startIndex:startIndex})}function showToast(options){return Emby.importModule("./modules/toast/toast.js").then(function(toast){return toast(options)})}function notifyAddedToPlayQueue(){return showToast({text:globalize.translate("HeaderAddedToPlayQueue"),icon:"&#xe03b;"}),Promise.resolve()}function notifyPlayingNext(){return showToast({text:globalize.translate("HeaderPlayingNext"),icon:"&#xe03b;"}),Promise.resolve()}function play(items,resume,queue,queueNext,shuffle,parentId){var method=queue?queueNext?"queueNext":"queue":"play",item=items[0],resume={startPositionTicks:!1===resume?0:item.StartPositionTicks,parentId:parentId};resume.items=items,resume.autoplay=1<items.length,shuffle&&(resume.shuffle=!0);let promise;return promise=("play"==method?playbackActions:playbackManager)[method](resume),queueNext?promise=promise.then(notifyPlayingNext):queue&&(promise=promise.then(notifyAddedToPlayQueue)),promise}function sendMessageToSession(item,options){return showPrompt({title:globalize.translate("HeaderSendMessage"),label:globalize.translate("LabelMessageText"),confirmText:globalize.translate("ButtonSend")}).then(function(text){return text?connectionManager.getApiClient(item).sendMessageCommand(item.Id,{Text:text,TimeoutMs:5e3}):Promise.reject()})}function seekToPosition(item,options){return"LyricsLine"===item.Type&&null==item.StartPositionTicks?Promise.resolve():playbackManager.seek(item.StartPositionTicks||0)}function showItem(item,options){var itemsContainer;return options&&!options.parentId&&(options.itemElement||options.positionTo)&&(itemsContainer=options.itemsContainer||(options.itemElement||options.positionTo).closest(".itemsContainer"))&&(options.parentId=itemsContainer.getAttribute("data-parentid")||null),appRouter.showItem(item,options)}function editItems(items,options){var item=items[0];return"Device"===item.Type||"User"===item.Type||"ActiveSession"===item.Type||"SeriesTimer"===item.Type||"Timer"===item.Type||"LiveTVTunerDevice"===item.Type||"LiveTVGuideSource"===item.Type?showItem(item,options):options.itemsContainer?.currentListOptions?.options.commandActions?.edit?options.itemsContainer.currentListOptions.options.commandActions.edit(items,options).then(function(result){!1!==result?.refreshItems&&options.itemsContainer.notifyRefreshNeeded(!0)}):itemManager.editItems(items,options)}function searchImageProviders(item,options){return Emby.importModule("./modules/imagedownloader/imagedownloader.js").then(function(ImageDownloader){return(new ImageDownloader).show({item:item.OwnerItem,imageType:item.ImageType,imageIndex:item.ImageIndex})})}function showImageUploader(item,options){return Emby.importModule("./modules/imageuploader/imageuploader.js").then(function(imageUploader){return imageUploader.show({imageType:item.ImageType,imageIndex:item.ImageIndex,item:item.OwnerItem})})}function moveImages(items,options,newIndex){items=items[0];return connectionManager.getApiClient(items).updateItemImageIndex(items.ItemId,items.ImageType,items.ImageIndex,newIndex)}function moveChannels(items,options,newIndex){items=items[0];return connectionManager.getApiClient(items).setChannelSortIndex(items,newIndex)}function movePlaylistItems(items,newIndex,playlistId){var item=items[0];return connectionManager.getApiClient(item).moveItemsInPlaylist(playlistId,items,newIndex)}function executeMoveInOrder(items,options,moveOptions){return options.itemsContainer?.currentListOptions?.options.commandActions?.moveInOrder?options.itemsContainer.currentListOptions.options.commandActions.moveInOrder(items,moveOptions).then(function(result){!1!==result?.refreshItems&&options.itemsContainer.notifyRefreshNeeded(!0)}):itemManager.moveInOrder(items,moveOptions)}function moveInOrder(items,options,newIndex){var currentIndex,item=items[0];switch(item?.Type){case"ChannelManagementInfo":return moveChannels(items,options,newIndex);case"ItemImage":return moveImages(items,options,newIndex);default:return item.PlaylistId?movePlaylistItems(items,newIndex,item.PlaylistId):(currentIndex=options.itemsContainer.indexOfItem(item),executeMoveInOrder(items,options,{currentIndex:currentIndex,newIndex:newIndex,itemsContainer:options.itemsContainer}))}}function moveByOffsetInOrder(items,options,moveOffset){var item=items[0];return"ChannelManagementInfo"===item?.Type?moveInOrder(items,options,item.SortIndexNumber+moveOffset):(item=options.itemsContainer.indexOfItem(item),moveInOrder(items,options,item+moveOffset))}function addImageFromUrl(item,options){return showPrompt({title:globalize.translate(item.ImageTag?"HeaderSetImageFromUrl":"HeaderAddImageFromUrl"),label:globalize.translate("LabelUrl")}).then(function(url){return connectionManager.getApiClient(item).updateItemImageFromUrl(item.ItemId,item.ImageType,item.ImageIndex,url)})}function createRecordingForChannel(item,options){return require(["channelRecordingCreator"]).then(function(responses){return responses[0].createRecordingForChannel(item,options)})}function onRecordCommand(item,options){let type=item.Type,id=item.Id,serverId=item.ServerId,timerId="Timer"===type?item.Id:item.TimerId,seriesTimerId=item.SeriesTimerId;var programId="Program"===type?id:item.ProgramId;let status=item.Status;return programId||timerId||seriesTimerId?require(["recordingHelper"]).then(function(responses){var responses=responses[0],programId="Program"===type?id:null;return responses.toggleRecording(serverId,programId,timerId,status,seriesTimerId)}):Promise.resolve()}function record(item,options){return("TvChannel"===item.Type?createRecordingForChannel:onRecordCommand)(item,options)}function getMediaSource(mediaSources,mediaSourceId){for(let i=0,length=mediaSources.length;i<length;i++)if(mediaSources[i].Id===mediaSourceId)return mediaSources[i];return mediaSources[0]}function editSubtitles(item,options){return require(["subtitleEditor"]).then(function(responses){return responses[0].show({item:item,mediaSource:getMediaSource(item.MediaSources,options.mediaSourceId)})})}function shareFileViaWeb(item,options,title,text,url,filename,mimeType){return fetch(url,{credentials:"same-origin"}).then(r=>r.blob()).then(function(blob){blob=new File([blob],filename,{type:mimeType});return navigator.share({files:[blob],title:title})})}function shareItems(items,options){var items=items[0],shareTitle=itemManager.getDisplayName(items);let shareText=shareTitle;items.Overview&&(shareText+=" - "+items.Overview);var apiClient=connectionManager.getApiClient(items);let shareUrl;if("Photo"===items.Type){if(shareUrl=apiClient.getImageUrl(items.Id,{type:"Primary",tag:items.ImageTags?.Primary,format:"png"}),"android"!==globalThis.appMode&&"ios"!==globalThis.appMode)return shareFileViaWeb(items,options,shareTitle,shareText,shareUrl,"image.png","image/png")}else if("Log"===items.Type){if(!items.ServerId)return appLogger.shareLog(items);if("android"!==globalThis.appMode&&"ios"!==globalThis.appMode)return shareUrl=apiClient.getLogDownloadUrl({Name:items.Name,Sanitize:options.Sanitize,SetFilename:!0}),shareFileViaWeb(items,options,shareTitle,shareText,shareUrl,items.Name,"text/plain")}else{options=apiClient.serverInfo()?.RemoteAddress;shareUrl=apiClient.getUrl("share",{},options).replace("/share","")}return navigator.share({title:shareTitle,text:shareText,url:shareUrl})}function convertMedia(items,options){return Emby.importModule("./modules/sync/sync.js").then(function(syncDialog){return syncDialog.showMenu({items:items,mode:"convert"})})}function getSyncAllowedPromise(items){if("embyclient"===globalThis.appMode){items=items[0];if(items)if(!connectionManager.getApiClient(items).isMinServerVersion("4.8.4"))return showAlertAndResolve("To use the download feature, please update Emby Server to at least 4.8.4 or greater.")}}function downloadToLocalDevice(items,options){var promise=getSyncAllowedPromise(items);return promise||Emby.importModule("./modules/sync/sync.js").then(function(syncDialog){return syncDialog.showMenu({items:items,mode:"download"})})}function downloadToDevice(items,options){var promise=getSyncAllowedPromise(items);return promise||Emby.importModule("./modules/sync/sync.js").then(function(syncDialog){return syncDialog.showMenu({items:items,mode:"sync"})})}function editImages(item,options){return require(["imageEditor"]).then(function(responses){return responses[0].show({itemId:item.Id,serverId:item.ServerId})})}function showMissingEpisodesForSeries(items,options){return Emby.importModule("./modules/missingepisodesdialog/missingepisodesdialog.js").then(function(MissingEpisodesDialog){return(new MissingEpisodesDialog).show({items:items})})}function showServerInfo(item,options){var apiClient=connectionManager.getApiClient(item);let html="";return html+='<div style="overflow-x:hidden;">',apiClient.serverVersion()&&(html=(html+='<h4 style="margin:0;" class="secondaryText">'+globalize.translate("Version")+"</h4>")+"<div>"+apiClient.serverVersion()+"</div>"),item.LastConnectionMode?html+='<h4 style="margin-bottom:0;" class="secondaryText">'+globalize.translate("HeaderLastConnectedTo")+"</h4>":html+='<h4 style="margin-bottom:0;" class="secondaryText">'+globalize.translate("HeaderServerAddress")+"</h4>",html+="<div>"+apiClient.serverAddress()+"</div>",item.RemoteAddress&&(html=(html+='<h4 style="margin-bottom:0;" class="secondaryText">'+globalize.translate("RemoteWAN")+"</h4>")+"<div>"+item.RemoteAddress+"</div>"),html+="</div>",showAlertAndResolve({title:item.Name,html:html,centerText:!1})}function copyToClipboard(item,options){return navigator.clipboard.writeText(item.AccessToken)}function toggleItemChecked(items,options){if("change"!==options.eventType)return Promise.resolve();var checked=options.eventTarget.checked;let promise,itemsContainer=options.itemsContainer;return(promise=itemsContainer?itemsContainer.currentListOptions?.options.checkboxAction({items:items,checked:checked}).then(function(){for(let i=0,length=items.length;i<length;i++){var item=items[i],index=itemsContainer.indexOfItemId(item.Id);-1!==index&&itemsContainer.onItemUpdated(index,item)}}):promise)||Promise.resolve()}function toggleItemCheckbox(items,options){options=options.itemElement.querySelector(".chkItemCheckbox");return options.checked=!options.checked,options.dispatchEvent(new CustomEvent("change",{cancelable:!0,bubbles:!0})),Promise.resolve()}function changeVirtualFolderContentType(page,virtualFolder){return showAlertAndResolve({title:globalize.translate("HeaderChangeFolderType"),text:globalize.translate("HeaderChangeFolderTypeHelp")})}function renameVirtualFolder(apiClient,virtualFolder,button){return showPrompt({label:globalize.translate("LabelNewName"),confirmText:globalize.translate("ButtonRename"),value:virtualFolder.Name}).then(function(newName){var refreshAfterChange;if(newName&&newName!==virtualFolder.Name)return refreshAfterChange="true"===button.closest(".page").getAttribute("data-refreshlibrary"),apiClient.renameVirtualFolder(virtualFolder,newName,refreshAfterChange)})}function getLyricsStream(item,mediaSource){let stream=mediaSource.MediaStreams.filter(function(s){return"Subtitle"===s.Type&&s.Index===item.DefaultSubtitleStreamIndex})[0];return stream=stream||mediaSource.MediaStreams.filter(function(s){return"Subtitle"===s.Type})[0]}function getLyricsTrackEventHtml(item,index){var html='<div style="margin:.5em 0;">';return html+item.Text+"</div>"}function showLyrics(item,options){let apiClient=connectionManager.getApiClient(item);return apiClient.getItem(apiClient.getCurrentUserId(),item.Id,{ExcludeFields:"Chapters,People,Overview,MediaStreams"}).then(function(item){var mediaSource=item.MediaSources[0],stream=getLyricsStream(item,mediaSource);return apiClient.getJSON(apiClient.getUrl("Items/"+item.Id+"/"+mediaSource.Id+"/Subtitles/"+stream.Index+"/Stream.js")).then(function(result){return showAlertAndResolve({html:result.TrackEvents.map(getLyricsTrackEventHtml).join(""),confirmButton:!1,title:itemManager.getDisplayName(item),centerText:!1,confirmText:globalize.translate("Close"),item:item})})})}function manageAccess(item,options){return require(["ItemAccessDialog"]).then(function(responses){return(new responses[0]).show({item:item})})}function getItemsContainerParentId(itemsContainer){return itemsContainer?.getAttribute("data-parentid")||null}function deleteItems(items,options,command){items={items:items,navigate:options.navigateOnDelete||!1,positionTo:options.positionTo,deleteType:command};return options.itemsContainer?.currentListOptions?.options.commandActions?.deleteItems?options.itemsContainer.currentListOptions.options.commandActions.deleteItems(items).then(function(result){!1!==result?.refreshItems&&options.itemsContainer.notifyRefreshNeeded(!0)}):itemManager.deleteItems(items)}function executeCommandInternal(command,items,options){var item=items[0];if("open"===command||"link"===command||"linkdialog"===command){if("Photo"!==item.MediaType)return"linkdialog"===command&&((options=options||{}).asDialog=!0),showItem(item,options);command="play"}if("download"===command)return downloadItems(items,options);if("identify"===command)return identifyItem(item,options);if("resetmetadata"===command)return resetMetadata(items,options);if("preview"===command)return previewItem(item,options);if("removefromresume"===command)return removeFromResume(items,options);if("removefromnextup"===command)return removeFromResume(items,options,"nextup");if("playtrailer"===command)return playTrailer(item);if("connecttoserver"===command)return connectToServer(item);if("setplaylistindex"===command)return playbackManager.setCurrentPlaylistItem(item.PlaylistItemId);if("multiselect"===command)return showMultiSelect(item,options);if("wakeserver"===command)return wakeServer(connectionManager.getApiClient(item),item);switch(command){case"leaveshareditems":case"delete":case"canceltimer":case"cancelseriestimer":return deleteItems(items,options,command);case"edit":return editItems(items,options);case"editimages":return editImages(item,options);case"instantmix":return playbackManager.instantMix(item);case"shuffle":return play(items,!1,null,null,!0,getItemsContainerParentId(options.itemsContainer));case"playallfromhereautoplay":return playAllFromHere(options.itemElement,item.ServerId,null,!0);case"playallfromhere":return playAllFromHere(options.itemElement,item.ServerId);case"queueallfromhere":return playAllFromHere(options.itemElement,item.ServerId,!0);case"play":return play(items,!0,null,null,null,getItemsContainerParentId(options.itemsContainer));case"playfrombeginning":return play(items,!1,null,null,null,getItemsContainerParentId(options.itemsContainer));case"resume":case"playpause":return play(items,!0,null,null,null,getItemsContainerParentId(options.itemsContainer));case"queue":return play(items,!1,!0,null,null,getItemsContainerParentId(options.itemsContainer));case"queuenext":return play(items,!1,!0,!0,null,getItemsContainerParentId(options.itemsContainer));case"artist":return appRouter.showItem(item.ArtistItems[0].Id,item.ServerId),Promise.resolve();case"album":return appRouter.showItem(item.AlbumId,item.ServerId),Promise.resolve();case"series":return appRouter.showItem(item.SeriesId,item.ServerId),Promise.resolve();case"season":return appRouter.showItem(item.SeasonId,item.ServerId),Promise.resolve();case"overview":return showAlertAndResolve({html:dom.stripScripts(item.Overview||""),confirmButton:!1,title:itemManager.getDisplayName(item)||item.Name,centerText:!1,item:item});case"programlink":var program=item.CurrentProgram||item;return program.ServerId||(program.ServerId=item.ServerId),showItem(program,options);case"addtoplaylist":return itemManager.addToPlaylist(items,options);case"addtocollection":return itemManager.addToCollection(items,options);case"markplayed":return markPlayed(items,options);case"markunplayed":return markUnplayed(items,options);case"favorite":return markFavorite(items,!0);case"unfavorite":return markFavorite(items,!1);case"searchimageproviders":return searchImageProviders(item,options);case"addimage":return showImageUploader(item,options);case"moveinorder":return moveInOrder(items,options,options.newIndex);case"moveupinorder":return moveByOffsetInOrder(items,options,-1);case"movedowninorder":return moveByOffsetInOrder(items,options,1);case"addimagefromurl":return addImageFromUrl(item,options);case"toggleitemchecked":return toggleItemChecked(items,options);case"togglecheckbox":return toggleItemCheckbox(items,options);case"copytoclipboard":return copyToClipboard(item,options);case"share":return shareItems(items,options);case"seektoposition":return seekToPosition(item,options);case"sync":return downloadToDevice(items,options);case"synclocal":return downloadToLocalDevice(items,options);case"convert":return convertMedia(items,options);case"editsubtitles":return editSubtitles(item,options);case"changelibrarycontenttype":return changeVirtualFolderContentType(connectionManager.getApiClient(item),item,options.positionTo);case"renamelibrary":return renameVirtualFolder(connectionManager.getApiClient(item),item,options.positionTo);case"refresh":return itemManager.refreshMetadata(items,options);case"scan":return itemManager.scanLibraryFiles(items,options);case"removefromplayqueue":return itemManager.removeFromPlayQueue(items,options);case"removefromplaylist":return connectionManager.getApiClient(item).removeItemsFromPlaylist(item.PlaylistId,items);case"removefromcollection":return connectionManager.getApiClient(item).removeItemsFromCollection(item.CollectionId,items);case"session_stop":return connectionManager.getApiClient(item).sendPlayStateCommand(item.Id,"Stop");case"session_playpause":return connectionManager.getApiClient(item).sendPlayStateCommand(item.Id,"PlayPause");case"session_sendmessage":return sendMessageToSession(item,options);case"session_shownowplayingitem":return item.NowPlayingItem?showItem(item.NowPlayingItem,options):Promise.reject();case"serverinfo":return showServerInfo(item,options);case"record":return record(item,options);case"lyrics":return showLyrics(item,options);case"manageaccess":return manageAccess(item,options);case"mergeversions":return itemManager.groupVersions(items,options);case"showmissingepisodes":return showMissingEpisodesForSeries(items,options);case"none":case"toggletreenode":return Promise.resolve();default:return itemManager.executeCommand(command,items,options)}}function executeCommand(command,items,options){let promise;try{promise=executeCommandInternal(command,items,options)}catch(err){promise=Promise.reject(err)}return!1===options?.showErrorMessage?promise:promise.catch(function(err){return err?responseHelper.handleErrorResponse(err):Promise.reject(err)})}export default{executeCommand:executeCommand};