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

1 line
No EOL
6.4 KiB
JavaScript

import BaseItemController from"./baseitemcontroller.js";import GenericItemController from"./genericitemcontroller.js";import globalize from"./../globalize.js";let DefaultItemControllerInstance=new BaseItemController,commandSources=[],controllersByType={};function getItemController(typeName){return controllersByType[typeName]||DefaultItemControllerInstance}function rejectNoItems(){return Promise.reject("noitems")}function registerItemController(controller){var typeNames=controller.getTypeNames();for(let i=0,length=typeNames.length;i<length;i++)controllersByType[typeNames[i]]=controller}registerItemController(new GenericItemController);export default{registerItemController:registerItemController,registerCommandSource:function(commandSource){commandSources.push(commandSource)},getItemController:getItemController,getDisplayName:function(item,options){return getItemController(item.Type).getDisplayName(item,options)},getDefaultIcon:function(item){return getItemController(item.Type).getDefaultIcon(item)},canConvert:function(item,user){return getItemController(item.Type).canConvert(item,user)},canDelete:function(item,user){return getItemController(item.Type).canDelete(item,user)},canEdit:function(item,user){return getItemController(item.Type).canEdit(item,user)},canEditImages:function(item,user){return getItemController(item.Type).canEditImages(item,user)},canEditSubtitles:function(item,user){return getItemController(item.Type).canEditSubtitles(item,user)},canAddToPlaylist:function(item,user){return getItemController(item.Type).canAddToPlaylist(item,user)},canAddToCollection:function(item,user){return getItemController(item.Type).canAddToCollection(item,user)},canDownload:function(item){return getItemController(item.Type).canDownload(item)},canDownloadSubtitles:function(item,user){return getItemController(item.Type).canDownloadSubtitles(item,user)},canIdentify:function(item,user){return getItemController(item.Type).canIdentify(item,user)},canSync:function(item,user){return getItemController(item.Type).canSync(item,user)},canManageMultiVersionGrouping:function(item,user){return getItemController(item.Type).canManageMultiVersionGrouping(item,user)},canRefreshMetadata:function(item,user){return getItemController(item.Type).canRefreshMetadata(item,user)},canShare:function(item,user){return getItemController(item.Type).canShare(item,user)},getItemTypeName:function(type){return getItemController(type).getItemTypeName(type)},getAvailableFields:function(options){return getItemController(options.itemType).getAvailableFields(options)},getDefaultSorting:function(options){return getItemController(options.itemType).getDefaultSorting(options)},getSortMenuOptions:function(options){return getItemController(options.itemType).getSortMenuOptions(options)},getPluralItemTypeName:function(type){return getItemController(type).getPluralItemTypeName(type)},canRate:function(item){return getItemController(item.Type).canRate(item)},canMarkPlayed:function(item){return getItemController(item.Type).canMarkPlayed(item)},getCommands:function(options){let items=options.items;if(items||(items=[],options.item&&items.push(options.item)),!items.length)return[];let commands=getItemController(items[0].Type).getCommands(options);for(let i=0,length=commandSources.length;i<length;i++){var subCommands=commandSources[i].getCommands(options);commands=commands.concat(subCommands)}return commands},editItems:function(items,options){return items.length?getItemController(items[0].Type).editItems(items,options):rejectNoItems()},refreshMetadata:function(items,options){return items.length?getItemController(items[0].Type).refreshMetadata(items,options):rejectNoItems()},scanLibraryFiles:function(items,options){return items.length?getItemController(items[0].Type).scanLibraryFiles(items,options):rejectNoItems()},moveInOrder:function(items,options){return items.length?getItemController(items[0].Type).moveInOrder(items,options):rejectNoItems()},removeFromPlayQueue:function(items,options){return items.length?getItemController(items[0].Type).removeFromPlayQueue(items,options):rejectNoItems()},addToPlaylist:function(items,options){return items.length?getItemController(items[0].Type).addToPlaylist(items,options):rejectNoItems()},addToCollection:function(items,options){return items.length?getItemController(items[0].Type).addToCollection(items,options):rejectNoItems()},showDeleteConfirmation:function(options){var items=options.items;return items.length?getItemController(items[0].Type).showDeleteConfirmation(options):rejectNoItems()},deleteItems:function(options){var items=options.items;return items.length?getItemController(items[0].Type).deleteItems(options):rejectNoItems()},getContentTypeName:function(contentType){if(!contentType)return globalize.translate("MixedContent");switch(contentType){case"movies":return globalize.translate("Movies");case"music":return globalize.translate("Music");case"tvshows":return globalize.translate("TVShows");case"books":return globalize.translate("Books");case"games":return globalize.translate("Games");case"musicvideos":return globalize.translate("MusicVideos");case"homevideos":return globalize.translate("HomeVideosAndPhotos");case"audiobooks":return globalize.translate("AudioBooks");case"boxsets":return globalize.translate("Collections");case"playlists":return globalize.translate("Playlists");default:return contentType}},groupVersions:function(items,options){return items.length?getItemController(items[0].Type).groupVersions(items,options):rejectNoItems()},executeCommand:function(command,items,options){return getItemController(items[0].Type).executeCommand(command,items,options).catch(function(err){if("nocommands"!==err)return Promise.reject(err);var commandSourceOptions=Object.assign({},options);commandSourceOptions.items=items;let commandSource;for(let i=0,commandSourcesLength=commandSources.length;i<commandSourcesLength;i++){var subCommands=commandSources[i].getCommands(commandSourceOptions);let subCommand;for(let j=0,subCommandsLength=subCommands.length;j<subCommandsLength;j++)if(subCommands[j].id===command){subCommand=subCommands[j];break}if(subCommand){commandSource=commandSources[i];break}}return commandSource?commandSource.executeCommand(command,items,options):Promise.reject("nocommands")})},addToListHelper:function(list,itemIds){return itemIds.length?DefaultItemControllerInstance.addToListHelper(list,itemIds):rejectNoItems()},createListHelper:function(apiClient,type,name,itemIds){return DefaultItemControllerInstance.createListHelper(apiClient,type,name,itemIds)}};