EmbyCrackedClient/web/modules/shortcuts.js

1 line
9.6 KiB
JavaScript
Raw Normal View History

2025-06-25 11:46:04 +08:00
import commandProcessor from"./commandprocessor.js";import inputManager from"./common/inputmanager.js";import connectionManager from"./emby-apiclient/connectionmanager.js";import playbackManager from"./common/playback/playbackmanager.js";import itemManager from"./common/itemmanager/itemmanager.js";import layoutManager from"./layoutmanager.js";function getVirtualFolder(apiClient,id){return apiClient.getVirtualFolders().then(function(result){return result.Items.filter(function(u){return u.ItemId===id})[0]})}function getItemFromChildNode(child,isMainElement,itemsContainer){child=getItemElementFromChildNode(child,isMainElement,itemsContainer);return child?getItemFromElement(child,itemsContainer):null}function getItemElementFromChildNode(child,isMainElement,itemsContainer){let itemSelector=itemsContainer?.getItemSelector();return itemSelector=itemSelector||".card,.listItem,.epgRow,.dataGridItem",isMainElement?child.closest(itemSelector):child.closest("[data-type],"+itemSelector)}function getItemFromElement(element,itemsContainer){let item;return itemsContainer=itemsContainer||element.closest(".itemsContainer"),item=itemsContainer&&(item=itemsContainer.getItemFromElement(element))?item:{Type:element.getAttribute("data-type"),Id:element.getAttribute("data-id"),ServerId:element.getAttribute("data-serverid"),IsFolder:"true"===element.getAttribute("data-isfolder"),Status:element.getAttribute("data-status")||null,MediaType:element.getAttribute("data-mediatype")||null,ChannelId:element.getAttribute("data-channelid")||null,TimerId:element.getAttribute("data-timerid")||null,SeriesTimerId:element.getAttribute("data-seriestimerid")||null}}function getItem(button,itemsContainer){let itemFromElement=getItemFromElement(button=getItemElementFromChildNode(button,null,itemsContainer),itemsContainer);button=itemFromElement.Type;if(!itemManager.getItemController(button).isSingleItemFetchRequired(button))return Promise.resolve(itemFromElement);var id=itemFromElement.Id;if(!id)return Promise.resolve(itemFromElement);var apiClient=connectionManager.getApiClient(itemFromElement);switch(button){case"VirtualFolder":return getVirtualFolder(apiClient,id);case"User":return apiClient.getUser(id);case"Timer":return apiClient.getLiveTvTimer(id);case"SeriesTimer":return apiClient.getLiveTvSeriesTimer(id)}itemsContainer=["ShareLevel"];return itemsContainer.push("SyncStatus"),itemsContainer.push("ContainerSyncStatus"),apiClient.getItem(apiClient.getCurrentUserId(),id,{fields:itemsContainer.join(","),ExcludeFields:"Chapters,Overview,People,MediaStreams,Subviews"}).then(function(fullItem){return fullItem.PlaylistItemId=itemFromElement.PlaylistItemId,fullItem.CollectionId=itemFromElement.CollectionId,fullItem.PlaylistId=itemFromElement.PlaylistId,fullItem})}function getUser(item){item=connectionManager.getApiClient(item);return item?.getCurrentUserId()?item.getCurrentUser():Promise.resolve(null)}function showContextMenu(itemElement,options){options.itemsContainer||(options.itemsContainer=itemElement.closest(".itemsContainer"));let itemsContainer=options.itemsContainer;return Promise.all([getItem(itemElement,itemsContainer),Emby.importModule("./modules/itemcontextmenu.js")]).then(function(responses){let item=responses[0];return getUser(item).then(function(user){options.positionTo&&!options.itemElement&&(options.itemElement=itemElement);var commandOptions=Object.assign({},itemsContainer.getCommandOptions(item));return responses[1].show(Object.assign(commandOptions,{items:[item],play:!0,queue:!0,playAllFromHere:!item.IsFolder,queueAllFromHere:!item.IsFolder,user:user,multiSelect:((itemsContainer.currentListOptions||{}).options||{}).multiSelect,programInfo:!0},options))})})}function notifyItemsContainerOfCommandResult(itemsContainer,result){itemsContainer.onCommandResult(result)}function getResolverWithAction(command,itemsContainer){return function(result){return itemsContainer&&notifyItemsContainerOfCommandResult(itemsContainer,{command:command,result:result}),Promise.resolve(result)}}function getResolver(itemsContainer){return function(result){return itemsContain