EmbyCrackedClient/web/modules/common/itemmanager/itemmanager.js

1 line
6.4 KiB
JavaScript
Raw Normal View History

2025-06-25 11:46:04 +08:00
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):rejectNoItem