1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00
jellyfin-web/dashboard-ui/bower_components/emby-apiclient/apiclientex.js
Luke Pulverenti 8a6884abef minify
2017-01-27 18:07:14 -05:00

1 line
No EOL
6.3 KiB
JavaScript

define(["apiclientcore","localassetmanager","events"],function(apiclientcorefactory,localassetmanager,events){"use strict";var localPrefix="local:",localViewPrefix="localview:";return function(serverAddress,clientName,applicationVersion,deviceName,deviceId,devicePixelRatio){function getUserViews(userId){return apiclientcore.getUserViews(userId).then(function(result){var serverInfo=apiclientcore.serverInfo();return serverInfo?getLocalView(serverInfo.Id,userId).then(function(localView){return localView&&(result.Items.push(localView),result.TotalRecordCount++),Promise.resolve(result)}):Promis.resolve(result)})}function getLocalView(serverId,userId){return localassetmanager.getViews(serverId,userId).then(function(views){var localView=null;return views.length>0&&(localView={Name:"Offline Items",ServerId:serverId,Id:"localview",Type:"localview"}),Promise.resolve(localView)})}function getItems(userId,options){var i,serverInfo=apiclientcore.serverInfo();if(serverInfo&&"localview"===options.ParentId)return localassetmanager.getViews(serverInfo.Id,userId).then(function(items){var result={Items:items,TotalRecordCount:items.length};return Promise.resolve(result)});if(serverInfo&&options&&(startsWith(options.ParentId,localViewPrefix)||startsWith(options.ParentId,localPrefix)))return localassetmanager.getViewItems(serverInfo.Id,userId,options.ParentId).then(function(items){items.forEach(function(item){item.Id=localPrefix+item.Id}),items.sort(function(a,b){return a.SortName.toLowerCase().localeCompare(b.SortName.toLowerCase())});var result={Items:items,TotalRecordCount:items.length};return Promise.resolve(result)});if(options&&options.ExcludeItemIds&&options.ExcludeItemIds.length){var exItems=options.ExcludeItemIds.split(",");for(i=0;i<exItems.length;i++)if(startsWith(exItems[i],localPrefix))return Promise.resolve(createEmptyList())}else if(options&&options.Ids&&options.Ids.length){var ids=options.Ids.split(","),hasLocal=!1;for(i=0;i<ids.length;i++)startsWith(ids[i],localPrefix)&&(hasLocal=!0);if(hasLocal)return localassetmanager.getItemsFromIds(serverInfo.Id,ids).then(function(items){items.forEach(function(item){item.Id=localPrefix+item.Id});var result={Items:items,TotalRecordCount:items.length};return Promise.resolve(result)})}return apiclientcore.getItems(userId,options)}function getItem(userId,itemId){itemId&&(itemId=itemId.toString());var serverInfo;return startsWith(itemId,localViewPrefix)&&(serverInfo=apiclientcore.serverInfo())?localassetmanager.getViews(serverInfo.Id,userId).then(function(items){var views=items.filter(function(item){return item.Id===itemId});return views.length>0?Promise.resolve(views[0]):Promise.reject()}):startsWith(itemId,localPrefix)&&(serverInfo=apiclientcore.serverInfo())?localassetmanager.getLocalItem(serverInfo.Id,stripStart(itemId,localPrefix)).then(function(item){return item.Item.Id=localPrefix+item.Item.Id,Promise.resolve(item.Item)}):apiclientcore.getItem(userId,itemId)}function getNextUpEpisodes(options){return options.SeriesId&&startsWith(options.SeriesId,localPrefix)?Promise.resolve(createEmptyList()):apiclientcore.getNextUpEpisodes(options)}function getSeasons(itemId,options){return startsWith(itemId,localPrefix)?(options.ParentId=itemId,getItems(apiclientcore.getCurrentUserId(),options)):apiclientcore.getSeasons(itemId,options)}function getEpisodes(itemId,options){return startsWith(options.SeasonId,localPrefix)?(options.ParentId=options.SeasonId,getItems(apiclientcore.getCurrentUserId(),options)):apiclientcore.getEpisodes(itemId,options)}function getThemeMedia(userId,itemId,inherit){return startsWith(itemId,localViewPrefix)||startsWith(itemId,localPrefix)?Promise.reject():apiclientcore.getThemeMedia(userId,itemId,inherit)}function getSimilarItems(itemId,options){return startsWith(itemId,localPrefix)?Promise.resolve(createEmptyList()):apiclientcore.getSimilarItems(itemId,options)}function updateFavoriteStatus(userId,itemId,isFavorite){return startsWith(itemId,localPrefix)?Promise.resolve():apiclientcore.updateFavoriteStatus(userId,itemId,isFavorite)}function getScaledImageUrl(itemId,options){if(startsWith(itemId,localPrefix)){var serverInfo=apiclientcore.serverInfo(),id=stripStart(itemId,localPrefix);return localassetmanager.getImageUrl(serverInfo.Id,id,options.type,0)}return apiclientcore.getScaledImageUrl(itemId,options)}function onWebSocketMessage(e,msg){events.trigger(self,"websocketmessage",[msg])}function startsWith(str,find){return!!(str&&find&&str.length>find.length&&0===str.indexOf(find))}function stripStart(str,find){return startsWith(str,find)?str.substr(find.length):str}function createEmptyList(){var result={Items:[],TotalRecordCount:0};return result}function getPlaybackInfo(itemId,options,deviceProfile){return localassetmanager.getLocalItem(apiclientcore.serverId(),stripStart(itemId,localPrefix)).then(function(item){var mediaSources=item.Item.MediaSources.map(function(m){return m.SupportsDirectPlay=!0,m.SupportsDirectStream=!1,m.SupportsTranscoding=!1,m});return{MediaSources:mediaSources}})}var apiclientcore=new apiclientcorefactory(serverAddress,clientName,applicationVersion,deviceName,deviceId,devicePixelRatio),self=Object.assign(this,apiclientcore);events.on(apiclientcore,"websocketmessage",onWebSocketMessage),Object.defineProperty(self,"onAuthenticated",{get:function(){return apiclientcore.onAuthenticated},set:function(newValue){apiclientcore.onAuthenticated=newValue}}),Object.defineProperty(self,"enableAutomaticBitrateDetection",{get:function(){return apiclientcore.enableAutomaticBitrateDetection},set:function(newValue){apiclientcore.enableAutomaticBitrateDetection=newValue}}),self.detectBitrate=function(){return Promise.reject()},self.reportPlaybackStart=function(options){if(!options)throw new Error("null options");return Promise.resolve()},self.reportPlaybackProgress=function(options){if(!options)throw new Error("null options");return Promise.resolve()},self.reportPlaybackStopped=function(options){if(!options)throw new Error("null options");return Promise.resolve()},self.getIntros=function(itemId){return Promise.resolve({Items:[],TotalRecordCount:0})},self.getUserViews=getUserViews,self.getItems=getItems,self.getItem=getItem,self.getSeasons=getSeasons,self.getEpisodes=getEpisodes,self.getThemeMedia=getThemeMedia,self.getNextUpEpisodes=getNextUpEpisodes,self.getSimilarItems=getSimilarItems,self.updateFavoriteStatus=updateFavoriteStatus,self.getScaledImageUrl=getScaledImageUrl,self.getPlaybackInfo=getPlaybackInfo}});