diff --git a/dashboard-ui/bower_components/emby-apiclient/.bower.json b/dashboard-ui/bower_components/emby-apiclient/.bower.json index 7c20098318..2ec3d5c768 100644 --- a/dashboard-ui/bower_components/emby-apiclient/.bower.json +++ b/dashboard-ui/bower_components/emby-apiclient/.bower.json @@ -16,12 +16,12 @@ }, "devDependencies": {}, "ignore": [], - "version": "1.1.112", - "_release": "1.1.112", + "version": "1.1.113", + "_release": "1.1.113", "_resolution": { "type": "version", - "tag": "1.1.112", - "commit": "e4b3d6c51534d2d0035e45ebfb486ea9959317aa" + "tag": "1.1.113", + "commit": "69a87cba28f55f11fcef19cef9e71329623c4635" }, "_source": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript.git", "_target": "^1.1.51", diff --git a/dashboard-ui/bower_components/emby-apiclient/apiclientex.js b/dashboard-ui/bower_components/emby-apiclient/apiclientex.js index aa0552d83a..753c6b1368 100644 --- a/dashboard-ui/bower_components/emby-apiclient/apiclientex.js +++ b/dashboard-ui/bower_components/emby-apiclient/apiclientex.js @@ -14,10 +14,19 @@ var apiclientcore = new apiclientcorefactory(serverAddress, clientName, applicationVersion, deviceName, deviceId, devicePixelRatio); + var self = Object.assign(this, apiclientcore); + events.on(apiclientcore, 'websocketmessage', onWebSocketMessage); - var self = this; + 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; } + }); function getUserViews(userId) { @@ -237,216 +246,6 @@ self.getSimilarItems = getSimilarItems; self.updateFavoriteStatus = updateFavoriteStatus; self.getScaledImageUrl = getScaledImageUrl; - - // Map "base" methods - self.serverAddress = apiclientcore.serverAddress; - self.serverInfo = apiclientcore.serverInfo; - self.serverId = apiclientcore.serverId; - self.getCurrentUser = apiclientcore.getCurrentUser; - self.isLoggedIn = apiclientcore.isLoggedIn; - self.getCurrentUserId = apiclientcore.getCurrentUserId; - self.accessToken = apiclientcore.accessToken; - self.deviceName = apiclientcore.deviceName; - self.deviceId = apiclientcore.deviceId; - self.appName = apiclientcore.appName; - self.appVersion = apiclientcore.appVersion; - self.clearAuthenticationInfo = apiclientcore.clearAuthenticationInfo; - self.setAuthenticationInfo = apiclientcore.setAuthenticationInfo; - self.encodeName = apiclientcore.encodeName; - self.setRequestHeaders = apiclientcore.setRequestHeaders; - self.ajax = apiclientcore.ajax; - self.fetch = apiclientcore.fetch; - self.getJSON = apiclientcore.getJSON; - self.fetchWithFailover = apiclientcore.fetchWithFailover; - self.get = apiclientcore.get; - self.getUrl = apiclientcore.getUrl; - self.updateServerInfo = apiclientcore.updateServerInfo; - self.isWebSocketSupported = apiclientcore.isWebSocketSupported; - self.ensureWebSocket = apiclientcore.ensureWebSocket; - self.openWebSocket = apiclientcore.openWebSocket; - self.closeWebSocket = apiclientcore.closeWebSocket; - self.sendWebSocketMessage = apiclientcore.sendWebSocketMessage; - self.isWebSocketOpen = apiclientcore.isWebSocketOpen; - self.isWebSocketOpenOrConnecting = apiclientcore.isWebSocketOpenOrConnecting; - self.getProductNews = apiclientcore.getProductNews; - self.getDownloadSpeed = apiclientcore.getDownloadSpeed; - self.detectBitrate = apiclientcore.detectBitrate; - //self.getItem = apiclientcore.getItem; - self.getRootFolder = apiclientcore.getRootFolder; - self.getNotificationSummary = apiclientcore.getNotificationSummary; - self.getNotifications = apiclientcore.getNotifications; - self.markNotificationsRead = apiclientcore.markNotificationsRead; - self.logout = apiclientcore.logout; - self.getRemoteImageProviders = apiclientcore.getRemoteImageProviders; - self.getAvailableRemoteImages = apiclientcore.getAvailableRemoteImages; - self.downloadRemoteImage = apiclientcore.downloadRemoteImage; - self.getLiveTvInfo = apiclientcore.getLiveTvInfo; - self.getLiveTvGuideInfo = apiclientcore.getLiveTvGuideInfo; - self.getLiveTvChannel = apiclientcore.getLiveTvChannel; - self.getLiveTvChannels = apiclientcore.getLiveTvChannels; - self.getLiveTvPrograms = apiclientcore.getLiveTvPrograms; - self.getLiveTvRecommendedPrograms = apiclientcore.getLiveTvRecommendedPrograms; - self.getLiveTvRecordings = apiclientcore.getLiveTvRecordings; - self.getLiveTvRecordingSeries = apiclientcore.getLiveTvRecordingSeries; - self.getLiveTvRecordingGroups = apiclientcore.getLiveTvRecordingGroups; - self.getLiveTvRecordingGroup = apiclientcore.getLiveTvRecordingGroup; - self.getLiveTvRecording = apiclientcore.getLiveTvRecording; - self.getLiveTvProgram = apiclientcore.getLiveTvProgram; - self.deleteLiveTvRecording = apiclientcore.deleteLiveTvRecording; - self.cancelLiveTvTimer = apiclientcore.cancelLiveTvTimer; - self.getLiveTvTimers = apiclientcore.getLiveTvTimers; - self.getLiveTvTimer = apiclientcore.getLiveTvTimer; - self.getNewLiveTvTimerDefaults = apiclientcore.getNewLiveTvTimerDefaults; - self.createLiveTvTimer = apiclientcore.createLiveTvTimer; - self.updateLiveTvTimer = apiclientcore.updateLiveTvTimer; - self.resetLiveTvTuner = apiclientcore.resetLiveTvTuner; - self.getLiveTvSeriesTimers = apiclientcore.getLiveTvSeriesTimers; - self.getFileOrganizationResults = apiclientcore.getFileOrganizationResults; - self.deleteOriginalFileFromOrganizationResult = apiclientcore.deleteOriginalFileFromOrganizationResult; - self.clearOrganizationLog = apiclientcore.clearOrganizationLog; - self.performOrganization = apiclientcore.performOrganization; - self.performEpisodeOrganization = apiclientcore.performEpisodeOrganization; - self.getLiveTvSeriesTimer = apiclientcore.getLiveTvSeriesTimer; - self.cancelLiveTvSeriesTimer = apiclientcore.cancelLiveTvSeriesTimer; - self.createLiveTvSeriesTimer = apiclientcore.createLiveTvSeriesTimer; - self.updateLiveTvSeriesTimer = apiclientcore.updateLiveTvSeriesTimer; - self.getRegistrationInfo = apiclientcore.getRegistrationInfo; - self.getSystemInfo = apiclientcore.getSystemInfo; - self.getPublicSystemInfo = apiclientcore.getPublicSystemInfo; - self.getInstantMixFromItem = apiclientcore.getInstantMixFromItem; - self.getEpisodes = apiclientcore.getEpisodes; - self.getDisplayPreferences = apiclientcore.getDisplayPreferences; - self.updateDisplayPreferences = apiclientcore.updateDisplayPreferences; - self.getSeasons = apiclientcore.getSeasons; - //self.getSimilarItems = apiclientcore.getSimilarItems; - self.getCultures = apiclientcore.getCultures; - self.getCountries = apiclientcore.getCountries; - self.getPluginSecurityInfo = apiclientcore.getPluginSecurityInfo; - self.getDirectoryContents = apiclientcore.getDirectoryContents; - self.getNetworkShares = apiclientcore.getNetworkShares; - self.getParentPath = apiclientcore.getParentPath; - self.getDrives = apiclientcore.getDrives; - self.getNetworkDevices = apiclientcore.getNetworkDevices; - self.cancelPackageInstallation = apiclientcore.cancelPackageInstallation; - self.refreshItem = apiclientcore.refreshItem; - self.installPlugin = apiclientcore.installPlugin; - self.restartServer = apiclientcore.restartServer; - self.shutdownServer = apiclientcore.shutdownServer; - self.getPackageInfo = apiclientcore.getPackageInfo; - self.getAvailableApplicationUpdate = apiclientcore.getAvailableApplicationUpdate; - self.getAvailablePluginUpdates = apiclientcore.getAvailablePluginUpdates; - self.getVirtualFolders = apiclientcore.getVirtualFolders; - self.getPhysicalPaths = apiclientcore.getPhysicalPaths; - self.getServerConfiguration = apiclientcore.getServerConfiguration; - self.getDevicesOptions = apiclientcore.getDevicesOptions; - self.getContentUploadHistory = apiclientcore.getContentUploadHistory; - self.getNamedConfiguration = apiclientcore.getNamedConfiguration; - self.getScheduledTasks = apiclientcore.getScheduledTasks; - self.startScheduledTask = apiclientcore.startScheduledTask; - self.getScheduledTask = apiclientcore.getScheduledTask; - self.getNextUpEpisodes = apiclientcore.getNextUpEpisodes; - self.stopScheduledTask = apiclientcore.stopScheduledTask; - self.getPluginConfiguration = apiclientcore.getPluginConfiguration; - self.getAvailablePlugins = apiclientcore.getAvailablePlugins; - self.uninstallPlugin = apiclientcore.uninstallPlugin; - self.removeVirtualFolder = apiclientcore.removeVirtualFolder; - self.addVirtualFolder = apiclientcore.addVirtualFolder; - self.updateVirtualFolderOptions = apiclientcore.updateVirtualFolderOptions; - self.renameVirtualFolder = apiclientcore.renameVirtualFolder; - self.addMediaPath = apiclientcore.addMediaPath; - self.updateMediaPath = apiclientcore.updateMediaPath; - self.removeMediaPath = apiclientcore.removeMediaPath; - self.deleteUser = apiclientcore.deleteUser; - self.deleteUserImage = apiclientcore.deleteUserImage; - self.deleteItemImage = apiclientcore.deleteItemImage; - self.deleteItem = apiclientcore.deleteItem; - self.stopActiveEncodings = apiclientcore.stopActiveEncodings; - self.reportCapabilities = apiclientcore.reportCapabilities; - self.updateItemImageIndex = apiclientcore.updateItemImageIndex; - self.getItemImageInfos = apiclientcore.getItemImageInfos; - self.getCriticReviews = apiclientcore.getCriticReviews; - self.getSessions = apiclientcore.getSessions; - self.uploadUserImage = apiclientcore.uploadUserImage; - self.uploadItemImage = apiclientcore.uploadItemImage; - self.getInstalledPlugins = apiclientcore.getInstalledPlugins; - self.getUser = apiclientcore.getUser; - self.getOfflineUser = apiclientcore.getOfflineUser; - self.getStudio = apiclientcore.getStudio; - self.getGenre = apiclientcore.getGenre; - self.getMusicGenre = apiclientcore.getMusicGenre; - self.getGameGenre = apiclientcore.getGameGenre; - self.getArtist = apiclientcore.getArtist; - self.getPerson = apiclientcore.getPerson; - self.getPublicUsers = apiclientcore.getPublicUsers; - self.getUsers = apiclientcore.getUsers; - self.getParentalRatings = apiclientcore.getParentalRatings; - self.getDefaultImageQuality = apiclientcore.getDefaultImageQuality; - self.getUserImageUrl = apiclientcore.getUserImageUrl; - self.getImageUrl = apiclientcore.getImageUrl; - //self.getScaledImageUrl = apiclientcore.getScaledImageUrl; - self.getThumbImageUrl = apiclientcore.getThumbImageUrl; - self.authenticateUserByName = apiclientcore.authenticateUserByName; - self.updateUserPassword = apiclientcore.updateUserPassword; - self.updateEasyPassword = apiclientcore.updateEasyPassword; - self.resetUserPassword = apiclientcore.resetUserPassword; - self.resetEasyPassword = apiclientcore.resetEasyPassword; - self.updateServerConfiguration = apiclientcore.updateServerConfiguration; - self.updateNamedConfiguration = apiclientcore.updateNamedConfiguration; - self.updateItem = apiclientcore.updateItem; - self.updatePluginSecurityInfo = apiclientcore.updatePluginSecurityInfo; - self.createUser = apiclientcore.createUser; - self.updateUser = apiclientcore.updateUser; - self.updateUserPolicy = apiclientcore.updateUserPolicy; - self.updateUserConfiguration = apiclientcore.updateUserConfiguration; - self.updateScheduledTaskTriggers = apiclientcore.updateScheduledTaskTriggers; - self.updatePluginConfiguration = apiclientcore.updatePluginConfiguration; - self.getAncestorItems = apiclientcore.getAncestorItems; - //self.getItems = apiclientcore.getItems; - self.getMovieRecommendations = apiclientcore.getMovieRecommendations; - self.getUpcomingEpisodes = apiclientcore.getUpcomingEpisodes; - self.getChannels = apiclientcore.getChannels; - self.getLatestChannelItems = apiclientcore.getLatestChannelItems; - //self.getUserViews = apiclientcore.getUserViews; - self.getArtists = apiclientcore.getArtists; - self.getAlbumArtists = apiclientcore.getAlbumArtists; - self.getGenres = apiclientcore.getGenres; - self.getMusicGenres = apiclientcore.getMusicGenres; - self.getGameGenres = apiclientcore.getGameGenres; - self.getPeople = apiclientcore.getPeople; - self.getStudios = apiclientcore.getStudios; - self.getLocalTrailers = apiclientcore.getLocalTrailers; - self.getGameSystems = apiclientcore.getGameSystems; - self.getAdditionalVideoParts = apiclientcore.getAdditionalVideoParts; - //self.getThemeMedia = apiclientcore.getThemeMedia; - self.getSearchHints = apiclientcore.getSearchHints; - self.getSpecialFeatures = apiclientcore.getSpecialFeatures; - self.getDateParamValue = apiclientcore.getDateParamValue; - self.markPlayed = apiclientcore.markPlayed; - self.markUnplayed = apiclientcore.markUnplayed; - //self.updateFavoriteStatus = apiclientcore.updateFavoriteStatus; - self.updateUserItemRating = apiclientcore.updateUserItemRating; - self.getItemCounts = apiclientcore.getItemCounts; - self.clearUserItemRating = apiclientcore.clearUserItemRating; - self.reportPlaybackStart = apiclientcore.reportPlaybackStart; - self.reportPlaybackProgress = apiclientcore.reportPlaybackProgress; - self.reportOfflineActions = apiclientcore.reportOfflineActions; - self.syncData = apiclientcore.syncData; - self.getReadySyncItems = apiclientcore.getReadySyncItems; - self.reportSyncJobItemTransferred = apiclientcore.reportSyncJobItemTransferred; - self.cancelSyncItems = apiclientcore.cancelSyncItems; - self.reportPlaybackStopped = apiclientcore.reportPlaybackStopped; - self.sendPlayCommand = apiclientcore.sendPlayCommand; - self.sendCommand = apiclientcore.sendCommand; - self.sendMessageCommand = apiclientcore.sendMessageCommand; - self.sendPlayStateCommand = apiclientcore.sendPlayStateCommand; - self.createPackageReview = apiclientcore.createPackageReview; - self.getPackageReviews = apiclientcore.getPackageReviews; - self.getSmartMatchInfos = apiclientcore.getSmartMatchInfos; - self.deleteSmartMatchEntries = apiclientcore.deleteSmartMatchEntries; - self.createPin = apiclientcore.createPin; - self.getPinStatus = apiclientcore.getPinStatus; - self.exchangePin = apiclientcore.exchangePin; - }; }); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-apiclient/localassetmanager.js b/dashboard-ui/bower_components/emby-apiclient/localassetmanager.js index 60c1a9cf5f..3a5bf23f78 100644 --- a/dashboard-ui/bower_components/emby-apiclient/localassetmanager.js +++ b/dashboard-ui/bower_components/emby-apiclient/localassetmanager.js @@ -276,12 +276,14 @@ function downloadFile(url, localItem) { - return transfermanager.downloadFile(url, localItem); + var folder = filerepository.getLocalPath(); + return transfermanager.downloadFile(url, folder, localItem); } function downloadSubtitles(url, fileName) { - return transfermanager.downloadSubtitles(url, fileName); + var folder = filerepository.getLocalPath(); + return transfermanager.downloadSubtitles(url, folder, fileName); } function getImageUrl(serverId, itemId, imageType, index) { @@ -296,7 +298,7 @@ function hasImage(serverId, itemId, imageType, index) { var pathArray = getImagePath(serverId, itemId, imageType, index); - var localFilePath = filerepository.getFullLocalPath(pathArray); + var localFilePath = filerepository.getFullMetadataPath(pathArray); return filerepository.fileExists(localFilePath).then(function (exists) { // TODO: Maybe check for broken download when file size is 0 and item is not queued @@ -316,7 +318,7 @@ function downloadImage(localItem, url, serverId, itemId, imageType, index) { var pathArray = getImagePath(serverId, itemId, imageType, index); - var localFilePath = filerepository.getFullLocalPath(pathArray); + var localFilePath = filerepository.getFullMetadataPath(pathArray); if (!localItem.AdditionalFiles) { localItem.AdditionalFiles = []; @@ -331,7 +333,8 @@ localItem.AdditionalFiles.push(fileInfo); - return transfermanager.downloadImage(url, localFilePath); + var folder = filerepository.getMetadataPath(); + return transfermanager.downloadImage(url, folder, localFilePath); } function isDownloadFileInQueue(path) { diff --git a/dashboard-ui/bower_components/emby-apiclient/sync/transfermanager.js b/dashboard-ui/bower_components/emby-apiclient/sync/transfermanager.js index f8bea7307b..309823e1f4 100644 --- a/dashboard-ui/bower_components/emby-apiclient/sync/transfermanager.js +++ b/dashboard-ui/bower_components/emby-apiclient/sync/transfermanager.js @@ -1,17 +1,17 @@ define(['filerepository'], function (filerepository) { 'use strict'; - function downloadFile(url, localPath) { + function downloadFile(url, folderName, localPath) { return Promise.resolve(); } - function downloadSubtitles(url, localItem, subtitleStreamh) { + function downloadSubtitles(url, folderName, localItem) { return Promise.resolve(''); } - function downloadImage(url, serverId, itemId, imageTag) { + function downloadImage(url, folderName, serverId, itemId, imageTag) { return Promise.resolve(false); } diff --git a/dashboard-ui/bower_components/emby-webcomponents/.bower.json b/dashboard-ui/bower_components/emby-webcomponents/.bower.json index 9c9d45962c..6559f7a7dd 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/.bower.json +++ b/dashboard-ui/bower_components/emby-webcomponents/.bower.json @@ -14,12 +14,12 @@ }, "devDependencies": {}, "ignore": [], - "version": "1.4.462", - "_release": "1.4.462", + "version": "1.4.465", + "_release": "1.4.465", "_resolution": { "type": "version", - "tag": "1.4.462", - "commit": "1beaad6a5a112a404e518ad16acfbdc6ca0c57cb" + "tag": "1.4.465", + "commit": "13b0fddbfbc24ac9dff0db7007be0cde3a94aed2" }, "_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_target": "^1.2.1", diff --git a/dashboard-ui/bower_components/emby-webcomponents/appsettings.js b/dashboard-ui/bower_components/emby-webcomponents/appsettings.js index 06b4a79ccd..37d0d4ed04 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/appsettings.js +++ b/dashboard-ui/bower_components/emby-webcomponents/appsettings.js @@ -47,7 +47,8 @@ define(['appStorage', 'events'], function (appStorage, events) { self.set('maxStaticMusicBitrate', val); } - return parseInt(self.get('maxStaticMusicBitrate') || '0') || null; + var defaultValue = 384000; + return parseInt(self.get('maxStaticMusicBitrate') || defaultValue.toString()) || defaultValue; }; self.maxChromecastBitrate = function (val) { diff --git a/dashboard-ui/bower_components/emby-webcomponents/chromecastplayer.js b/dashboard-ui/bower_components/emby-webcomponents/chromecastplayer.js index ef26cfdf4e..b8d60c177c 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/chromecastplayer.js +++ b/dashboard-ui/bower_components/emby-webcomponents/chromecastplayer.js @@ -684,7 +684,7 @@ }; self.stop = function () { - castPlayer.sendMessage({ + return castPlayer.sendMessage({ options: {}, command: 'Stop' }); @@ -726,7 +726,7 @@ return state.PositionTicks; }; - self.duration = function() { + self.duration = function () { var state = self.lastPlayerData || {}; state = state.NowPlayingItem || {}; return state.RunTimeTicks; @@ -941,10 +941,11 @@ self.endSession = function () { - self.stop(); - setTimeout(function () { - castPlayer.stopApp(); - }, 1000); + self.stop().then(function () { + setTimeout(function () { + castPlayer.stopApp(); + }, 1000); + }); }; self.volumeUp = function () { @@ -975,7 +976,7 @@ }; function normalizePrimaryImage(state) { - + if (state && state.NowPlayingItem) { if (!state.NowPlayingItem.ImageTags || !state.NowPlayingItem.ImageTags.Primary) { if (state.NowPlayingItem.PrimaryImageTag) { diff --git a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js index 83cbff09b9..d314996411 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js +++ b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js @@ -514,7 +514,7 @@ html += '