define(["exports","./apiclient.js","./../localdatabase/localassetmanager.js","./../common/servicelocator.js"],function(_exports,_apiclient,_localassetmanager,_servicelocator){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;var localPrefix="local:";function isLocalId(str){return(str=str&&Array.isArray(str)?str[0]:str)&&str.startsWith("local")}function mapToId(i){return i.Id}function stripLocalPrefix(str){str=stripStart(str,localPrefix);return stripStart(str,"localview:")}function stripStart(str,find){return str&&find&&str.startsWith(find)?str.substr(find.length):str}function convertIdToLocal(guid){return guid?isLocalId(guid)?guid:localPrefix+guid:null}function syncNow(){require(["localsync"],function(localSync){localSync.sync()})}function getLocalUrl(_ref){var _ref=_ref.MediaSources;return _ref&&_ref.length?(_ref=_ref[0]).StreamUrl||_ref.Path:""}function getMusicFolders(serverId){var list=[];return list.push({Name:"Albums",ServerId:serverId,Id:"localview:MusicAlbumsView",Type:"MusicAlbumsView",IsFolder:!0}),list.push({Name:"Songs",ServerId:serverId,Id:"localview:MusicSongsView",Type:"MusicSongsView",IsFolder:!0}),list}function getTopLevelViews(serverId,types,forceIncludeAll){var list=[];return(types.includes("Audio")||forceIncludeAll)&&list.push({Name:"Music",ServerId:serverId,Id:"localview:MusicView",Type:"MusicView",CollectionType:"music",IsFolder:!0}),(types.includes("Photo")||forceIncludeAll)&&list.push({Name:"Photos",ServerId:serverId,Id:"localview:PhotosView",Type:"PhotosView",CollectionType:"photos",IsFolder:!0}),(types.includes("Episode")||forceIncludeAll)&&list.push({Name:"TV",ServerId:serverId,Id:"localview:TVView",Type:"TVView",CollectionType:"tvshows",IsFolder:!0}),(types.includes("Movie")||forceIncludeAll)&&list.push({Name:"Movies",ServerId:serverId,Id:"localview:MoviesView",Type:"MoviesView",CollectionType:"movies",IsFolder:!0}),(types.includes("Video")||forceIncludeAll)&&list.push({Name:"Videos",ServerId:serverId,Id:"localview:VideosView",Type:"VideosView",IsFolder:!0}),(types.includes("MusicVideo")||forceIncludeAll)&&list.push({Name:"Music Videos",ServerId:serverId,Id:"localview:MusicVideosView",Type:"MusicVideosView",CollectionType:"musicvideos",IsFolder:!0}),(types.includes("Trailer")||forceIncludeAll)&&list.push({Name:"Trailers",ServerId:serverId,Id:"localview:TrailersView",Type:"TrailersView",IsFolder:!0}),(types.includes("Book")||forceIncludeAll)&&list.push({Name:"Books",ServerId:serverId,Id:"localview:BooksView",Type:"BooksView",IsFolder:!0}),(types.includes("Game")||forceIncludeAll)&&list.push({Name:"Games",ServerId:serverId,Id:"localview:GamesView",Type:"GamesView",IsFolder:!0}),list}function getDownloadedItems(serverId,options){var items,searchParentId=options.ParentId;switch((searchParentId=searchParentId)?(searchParentId=stripStart(searchParentId,"localview:"),stripStart(searchParentId,"local:")):null){case"MusicView":if(options.Recursive)break;return Promise.resolve({Items:items=getMusicFolders(serverId),TotalRecordCount:items.length})}return _servicelocator.itemRepository.getLibraryItems(serverId,options)}function adjustIdProperties(downloadedItem){downloadedItem.Id=convertIdToLocal(downloadedItem.Id),downloadedItem.SeriesId=convertIdToLocal(downloadedItem.SeriesId),downloadedItem.SeasonId=convertIdToLocal(downloadedItem.SeasonId),downloadedItem.AlbumId=convertIdToLocal(downloadedItem.AlbumId),downloadedItem.ParentId=convertIdToLocal(downloadedItem.ParentId),downloadedItem.ParentThumbItemId=convertIdToLocal(downloadedItem.ParentThumbItemId),downloadedItem.ParentPrimaryImageItemId=convertIdToLocal(downloadedItem.ParentPrimaryImageItemId),downloadedItem.PrimaryImageItemId=convertIdToLocal(downloadedItem.PrimaryImageItemId),downloadedItem.ParentLogoItemId=convertIdToLocal(downloadedItem.ParentLogoItemId),downloadedItem.ParentBackdropItemId=convertIdToLocal(downloadedItem.ParentBackdropItemId),downloadedItem.ParentBackdropImageTags=null}var min,max,PlaySessionIdPrefix=Date.now()+"_"+(min=1,max=1e5,min=Math.ceil(min),max=Math.floor(max),Math.floor(Math.random()*(max-min)+min));function nextPlaySessionId(){return PlaySessionIdPrefix+"_"+Date.now()}function ApiClientEx(serverAddress,appName,appVersion,deviceName,deviceId,devicePixelRatio){_apiclient.default.apply(this,arguments)}Object.assign(ApiClientEx.prototype,_apiclient.default.prototype),ApiClientEx.prototype.getPlaybackInfo=function(itemId,options,deviceProfile,signal){var promises=[];return isLocalId(itemId)||isLocalId(null==options?void 0:options.MediaSourceId)?promises.push(Promise.resolve({MediaSources:[],PlaySessionId:nextPlaySessionId()})):promises.push(_apiclient.default.prototype.getPlaybackInfo.apply(this,arguments)),options&&options.MediaSourceId&&!isLocalId(options.MediaSourceId)?promises.push(Promise.resolve({MediaSources:[],PlaySessionId:nextPlaySessionId()})):promises.push(_servicelocator.itemRepository.getLibraryItem(this.serverId(),stripLocalPrefix(itemId)).then(function(item){return!item||item.SyncStatus&&"synced"!==item.SyncStatus?{MediaSources:[],PlaySessionId:nextPlaySessionId()}:{MediaSources:item.Item.MediaSources.map(function(m){return null!=options.AudioStreamIndex&&(m.DefaultAudioStreamIndex=parseInt(options.AudioStreamIndex)),null!=options.SubtitleStreamIndex&&(m.DefaultSubtitleStreamIndex=parseInt(options.SubtitleStreamIndex)),m.SupportsDirectPlay=!0,m.SupportsDirectStream=!1,m.SupportsTranscoding=!1,m.IsLocal=!0,m.Name="Downloaded version",m.Id=localPrefix+item.Item.Id,m}),PlaySessionId:nextPlaySessionId()}})),Promise.all(promises).then(function(results){var result=results[0],localResult=results[1];localResult.MediaSources.length&&(result.ErrorCode=null);for(var i=0,length=localResult.MediaSources.length;i=.9*libraryItem.RunTimeTicks&&(libraryItem.UserData.Played=!0,libraryItem.UserData.PlaybackPositionTicks=0,libraryItem.UserData.PlayedPercentage=0),_servicelocator.itemRepository.updateLibraryItem(item.ServerId,item.Id,item)):void 0:(console.log("item not found in local database: "+stripLocalPrefix(localId)),Promise.resolve())})),serverInfo=isLocalId(options.ItemId)?Promise.resolve():_apiclient.default.prototype.reportPlaybackProgress.apply(this,arguments),Promise.all([localPromise||Promise.resolve(),serverInfo]);throw new Error("null options")},ApiClientEx.prototype.reportPlaybackStopped=function(options){var localId,serverInfo,instance,localPromise,serverPromise;if(options)return(localId=isLocalId(options.ItemId)?options.ItemId:isLocalId(options.MediaSourceId)?options.MediaSourceId:null)&&(serverInfo=this.serverInfo())&&(instance=this,localPromise=_servicelocator.itemRepository.getLibraryItem(serverInfo.Id,stripLocalPrefix(localId)).then(function(item){var libraryItem;return item?"Video"===(libraryItem=item.Item).MediaType?(libraryItem.UserData=libraryItem.UserData||{},libraryItem.UserData.PlaybackPositionTicks=options.PositionTicks,libraryItem.UserData.PlayedPercentage=Math.min(libraryItem.RunTimeTicks?(options.PositionTicks||0)/libraryItem.RunTimeTicks*100:0,100),libraryItem.UserData.PlaybackPositionTicks&&libraryItem.RunTimeTicks&&libraryItem.UserData.PlaybackPositionTicks>=.9*libraryItem.RunTimeTicks&&(libraryItem.UserData.Played=!0,libraryItem.UserData.PlaybackPositionTicks=0,libraryItem.UserData.PlayedPercentage=0),_servicelocator.itemRepository.updateLibraryItem(item.ServerId,item.Id,item).then(function(){var action,d;return isLocalId(options.ItemId)?(action={Date:(new Date).toISOString(),ItemId:stripLocalPrefix(localId),PositionTicks:options.PositionTicks,ServerId:serverInfo.Id,Type:"PlayedItem",UserId:instance.getCurrentUserId(),Id:(d=Date.now(),window.performance&&"function"==typeof window.performance.now&&(d+=performance.now()),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(c){var r=(d+16*Math.random())%16|0;return d=Math.floor(d/16),("x"===c?r:3&r|8).toString(16)}))},_servicelocator.userActionRepository.addUserAction(action.Id,action)):Promise.resolve()})):void 0:(console.log("item not found in local database: "+stripLocalPrefix(localId)),Promise.resolve())})),serverPromise=isLocalId(options.ItemId)?Promise.resolve():_apiclient.default.prototype.reportPlaybackStopped.apply(this,arguments),Promise.all([localPromise||Promise.resolve(),serverPromise]);throw new Error("null options")},ApiClientEx.prototype.getItemDownloadUrl=function(itemId,mediaSourceId){var serverInfo,localId=isLocalId(itemId)?itemId:isLocalId(mediaSourceId)?mediaSourceId:null;return localId?(serverInfo=this.serverInfo())?_servicelocator.itemRepository.getLibraryItem(serverInfo.Id,stripLocalPrefix(localId)).then(function(_ref7){_ref7=_ref7.LocalPath;return Promise.resolve(_ref7)}):Promise.reject():_apiclient.default.prototype.getItemDownloadUrl.apply(this,arguments)},ApiClientEx.prototype.getItemOriginalFileUrl=function(itemId,mediaSourceId){var serverInfo,localId=isLocalId(itemId)?itemId:isLocalId(mediaSourceId)?mediaSourceId:null;return localId?(serverInfo=this.serverInfo())?_servicelocator.itemRepository.getLibraryItem(serverInfo.Id,stripLocalPrefix(localId)).then(function(_ref8){_ref8=_ref8.LocalPath;return Promise.resolve(_ref8)}):Promise.reject():_apiclient.default.prototype.getItemOriginalFileUrl.apply(this,arguments)},ApiClientEx.prototype.deleteItemsInternal=function(items){var itemIds,instance;if(items)return itemIds=items.map(mapToId).filter(isLocalId),_apiclient.default.prototype.deleteItemsInternal.apply(instance=this,arguments).then(function(){return Promise.all(itemIds.map(function(itemId){return _servicelocator.itemRepository.getLibraryItem(instance.serverId(),stripLocalPrefix(itemId)).then(function(item){return item?_localassetmanager.default.removeLocalItem(item).then(syncNow):Promise.resolve()})}))});throw new Error("null itemId")};_exports.default=ApiClientEx});