diff --git a/dashboard-ui/bower_components/emby-apiclient/.bower.json b/dashboard-ui/bower_components/emby-apiclient/.bower.json index 2afe3eb6b2..7c20098318 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.111", - "_release": "1.1.111", + "version": "1.1.112", + "_release": "1.1.112", "_resolution": { "type": "version", - "tag": "1.1.111", - "commit": "6a58b3a503f28eda5198d662643edaedd921abbd" + "tag": "1.1.112", + "commit": "e4b3d6c51534d2d0035e45ebfb486ea9959317aa" }, "_source": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript.git", "_target": "^1.1.51", diff --git a/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js b/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js index 7af102a4a2..58f9dac645 100644 --- a/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js +++ b/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js @@ -251,6 +251,10 @@ return credentialProvider.credentials().ConnectAccessToken; }; + self.getApiClients = function () { + return apiClients; + }; + self.getServerInfo = function (id) { var servers = credentialProvider.credentials().Servers; diff --git a/dashboard-ui/bower_components/emby-webcomponents/.bower.json b/dashboard-ui/bower_components/emby-webcomponents/.bower.json index 67c6ccdd1b..12295e25e1 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.460", - "_release": "1.4.460", + "version": "1.4.461", + "_release": "1.4.461", "_resolution": { "type": "version", - "tag": "1.4.460", - "commit": "c25b2134e84594781f7eb2e6bd85bc2529a1d922" + "tag": "1.4.461", + "commit": "4f817f597ac06d80fe41e3d7d096f4fd5d9b7be2" }, "_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_target": "^1.2.1", diff --git a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/cardbuilder.js b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/cardbuilder.js index 9070b92504..ac03b063cb 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/cardbuilder.js +++ b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/cardbuilder.js @@ -6,15 +6,13 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana function getCardsHtml(items, options) { - var apiClient = connectionManager.currentApiClient(); - if (arguments.length === 1) { options = arguments[0]; items = options.items; } - var html = buildCardsHtmlInternal(items, apiClient, options); + var html = buildCardsHtmlInternal(items, options); return html; } @@ -254,7 +252,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana options.width = options.width || getImageWidth(options.shape); } - function buildCardsHtmlInternal(items, apiClient, options) { + function buildCardsHtmlInternal(items, options) { var isVertical; @@ -269,7 +267,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana setCardData(items, options); if (options.indexBy === 'Genres') { - return buildCardsByGenreHtmlInternal(items, apiClient, options); + return buildCardsByGenreHtmlInternal(items, options); } var className = 'card'; @@ -290,11 +288,18 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var hasOpenSection; var sectionTitleTagName = options.sectionTitleTagName || 'div'; + var apiClient; + var lastServerId; for (var i = 0, length = items.length; i < length; i++) { var item = items[i]; + if (item.ServerId !== lastServerId) { + lastServerId = item.ServerId; + apiClient = connectionManager.getApiClient(lastServerId); + } + if (options.indexBy) { var newIndexValue = ''; @@ -404,7 +409,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana }); } - function buildCardsByGenreHtmlInternal(items, apiClient, options) { + function buildCardsByGenreHtmlInternal(items, options) { var className = 'card'; @@ -435,7 +440,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } var cardClass = className; - currentItemHtml += buildCard(i, renderItem, apiClient, options, cardClass); + currentItemHtml += buildCard(i, renderItem, connectionManager.getApiClient(renderItem.ServerId), options, cardClass); itemsInRow++; @@ -1412,9 +1417,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } } - var apiClient = connectionManager.currentApiClient(); - - var html = buildCardsHtmlInternal(items, apiClient, options); + var html = buildCardsHtmlInternal(items, options); if (html) { diff --git a/dashboard-ui/bower_components/emby-webcomponents/input/api.js b/dashboard-ui/bower_components/emby-webcomponents/input/api.js index 19cda4d7b9..8c38a09fee 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/input/api.js +++ b/dashboard-ui/bower_components/emby-webcomponents/input/api.js @@ -196,10 +196,7 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus events.on(apiClient, "websocketmessage", onWebSocketMessageReceived); } - var current = connectionManager.currentApiClient(); - if (current) { - bindEvents(current); - } + connectionManager.getApiClients().forEach(bindEvents); events.on(connectionManager, 'apiclientcreated', function (e, newApiClient) { diff --git a/dashboard-ui/bower_components/emby-webcomponents/servernotifications.js b/dashboard-ui/bower_components/emby-webcomponents/servernotifications.js index b9abc6a3e8..9ffe0e7a8c 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/servernotifications.js +++ b/dashboard-ui/bower_components/emby-webcomponents/servernotifications.js @@ -28,10 +28,7 @@ define(['connectionManager', 'events'], function (connectionManager, events) { events.on(apiClient, "websocketmessage", onWebSocketMessageReceived); } - var current = connectionManager.currentApiClient(); - if (current) { - bindEvents(current); - } + connectionManager.getApiClients().forEach(bindEvents); events.on(connectionManager, 'apiclientcreated', function (e, newApiClient) { diff --git a/dashboard-ui/bower_components/emby-webcomponents/thememediaplayer.js b/dashboard-ui/bower_components/emby-webcomponents/thememediaplayer.js index 9dfd3d1c0e..84eda280ef 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/thememediaplayer.js +++ b/dashboard-ui/bower_components/emby-webcomponents/thememediaplayer.js @@ -53,7 +53,7 @@ define(['playbackManager', 'userSettings'], function (playbackManager, userSetti require(['connectionManager'], function (connectionManager) { - var apiClient = connectionManager.currentApiClient(); + var apiClient = connectionManager.getApiClient(item.ServerId); apiClient.getThemeMedia(apiClient.getCurrentUserId(), item.Id, true).then(function (themeMediaResult) { var ownerId = themeMediaResult.ThemeVideosResult.Items.length ? themeMediaResult.ThemeVideosResult.OwnerId : themeMediaResult.ThemeSongsResult.OwnerId; @@ -74,7 +74,7 @@ define(['playbackManager', 'userSettings'], function (playbackManager, userSetti var state = e.detail.state || {}; var item = state.item; - if (item) { + if (item && item.ServerId) { loadThemeMedia(item); return; } diff --git a/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/userdatabuttons.js b/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/userdatabuttons.js index dd7d63a4ab..e2759bb303 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/userdatabuttons.js +++ b/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/userdatabuttons.js @@ -8,7 +8,7 @@ define(['connectionManager', 'globalize', 'dom', 'itemHelper', 'paper-icon-butto markFavorite: markFavorite }; - function getUserDataButtonHtml(method, itemId, buttonCssClass, iconCssClass, icon, tooltip, style) { + function getUserDataButtonHtml(method, itemId, serverId, buttonCssClass, iconCssClass, icon, tooltip, style) { if (style === 'fab-mini') { style = 'fab'; @@ -30,7 +30,7 @@ define(['connectionManager', 'globalize', 'dom', 'itemHelper', 'paper-icon-butto iconCssClass += 'md-icon'; - return ''; + return ''; } function onContainerClick(e) { @@ -98,15 +98,17 @@ define(['connectionManager', 'globalize', 'dom', 'itemHelper', 'paper-icon-butto var iconCssClass = options.iconCssClass; + var serverId = item.ServerId; + if (includePlayed !== false) { var tooltipPlayed = globalize.translate('sharedcomponents#MarkPlayed'); if (item.MediaType === 'Video' || item.Type === 'Series' || item.Type === 'Season' || item.Type === 'BoxSet' || item.Type === 'Playlist') { if (item.Type !== 'TvChannel') { if (userData.Played) { - html += getUserDataButtonHtml('markPlayed', itemId, btnCssClass + ' btnUserDataOn', iconCssClass, 'check', tooltipPlayed, style); + html += getUserDataButtonHtml('markPlayed', itemId, serverId, btnCssClass + ' btnUserDataOn', iconCssClass, 'check', tooltipPlayed, style); } else { - html += getUserDataButtonHtml('markPlayed', itemId, btnCssClass, iconCssClass, 'check', tooltipPlayed, style); + html += getUserDataButtonHtml('markPlayed', itemId, serverId, btnCssClass, iconCssClass, 'check', tooltipPlayed, style); } } } @@ -116,24 +118,24 @@ define(['connectionManager', 'globalize', 'dom', 'itemHelper', 'paper-icon-butto //var tooltipDislike = globalize.translate('sharedcomponents#Dislike'); //if (typeof userData.Likes == "undefined") { - // html += getUserDataButtonHtml('markDislike', itemId, btnCssClass + ' btnUserData btnDislike', 'thumb-down', tooltipDislike); - // html += getUserDataButtonHtml('markLike', itemId, btnCssClass + ' btnUserData btnLike', 'thumb-up', tooltipLike); + // html += getUserDataButtonHtml('markDislike', itemId, serverId, btnCssClass + ' btnUserData btnDislike', 'thumb-down', tooltipDislike); + // html += getUserDataButtonHtml('markLike', itemId, serverId, btnCssClass + ' btnUserData btnLike', 'thumb-up', tooltipLike); //} //else if (userData.Likes) { - // html += getUserDataButtonHtml('markDislike', itemId, btnCssClass + ' btnUserData btnDislike', 'thumb-down', tooltipDislike); - // html += getUserDataButtonHtml('markLike', itemId, btnCssClass + ' btnUserData btnLike btnUserDataOn', 'thumb-up', tooltipLike); + // html += getUserDataButtonHtml('markDislike', itemId, serverId, btnCssClass + ' btnUserData btnDislike', 'thumb-down', tooltipDislike); + // html += getUserDataButtonHtml('markLike', itemId, serverId, btnCssClass + ' btnUserData btnLike btnUserDataOn', 'thumb-up', tooltipLike); //} //else { - // html += getUserDataButtonHtml('markDislike', itemId, btnCssClass + ' btnUserData btnDislike btnUserDataOn', 'thumb-down', tooltipDislike); - // html += getUserDataButtonHtml('markLike', itemId, btnCssClass + ' btnUserData btnLike', 'thumb-up', tooltipLike); + // html += getUserDataButtonHtml('markDislike', itemId, serverId, btnCssClass + ' btnUserData btnDislike btnUserDataOn', 'thumb-down', tooltipDislike); + // html += getUserDataButtonHtml('markLike', itemId, serverId, btnCssClass + ' btnUserData btnLike', 'thumb-up', tooltipLike); //} var tooltipFavorite = globalize.translate('sharedcomponents#Favorite'); if (userData.IsFavorite) { - html += getUserDataButtonHtml('markFavorite', itemId, btnCssClass + ' btnUserData btnUserDataOn', iconCssClass, 'favorite', tooltipFavorite, style); + html += getUserDataButtonHtml('markFavorite', itemId, serverId, btnCssClass + ' btnUserData btnUserDataOn', iconCssClass, 'favorite', tooltipFavorite, style); } else { - html += getUserDataButtonHtml('markFavorite', itemId, btnCssClass + ' btnUserData', iconCssClass, 'favorite', tooltipFavorite, style); + html += getUserDataButtonHtml('markFavorite', itemId, serverId, btnCssClass + ' btnUserData', iconCssClass, 'favorite', tooltipFavorite, style); } return html; @@ -142,10 +144,11 @@ define(['connectionManager', 'globalize', 'dom', 'itemHelper', 'paper-icon-butto function markFavorite(link) { var id = link.getAttribute('data-itemid'); + var serverId = link.getAttribute('data-serverid'); var markAsFavorite = !link.classList.contains('btnUserDataOn'); - favorite(id, markAsFavorite); + favorite(id, serverId, markAsFavorite); if (markAsFavorite) { link.classList.add('btnUserDataOn'); @@ -157,16 +160,17 @@ define(['connectionManager', 'globalize', 'dom', 'itemHelper', 'paper-icon-butto function markLike(link) { var id = link.getAttribute('data-itemid'); + var serverId = link.getAttribute('data-serverid'); if (!link.classList.contains('btnUserDataOn')) { - likes(id, true); + likes(id, serverId, true); link.classList.add('btnUserDataOn'); } else { - clearLike(id); + clearLike(id, serverId); link.classList.remove('btnUserDataOn'); } @@ -177,16 +181,17 @@ define(['connectionManager', 'globalize', 'dom', 'itemHelper', 'paper-icon-butto function markDislike(link) { var id = link.getAttribute('data-itemid'); + var serverId = link.getAttribute('data-serverid'); if (!link.classList.contains('btnUserDataOn')) { - likes(id, false); + likes(id, serverId, false); link.classList.add('btnUserDataOn'); } else { - clearLike(id); + clearLike(id, serverId); link.classList.remove('btnUserDataOn'); } @@ -197,43 +202,44 @@ define(['connectionManager', 'globalize', 'dom', 'itemHelper', 'paper-icon-butto function markPlayed(link) { var id = link.getAttribute('data-itemid'); + var serverId = link.getAttribute('data-serverid'); if (!link.classList.contains('btnUserDataOn')) { - played(id, true); + played(id, serverId, true); link.classList.add('btnUserDataOn'); } else { - played(id, false); + played(id, serverId, false); link.classList.remove('btnUserDataOn'); } } - function likes(id, isLiked) { - var apiClient = connectionManager.currentApiClient(); + function likes(id, serverId, isLiked) { + var apiClient = connectionManager.getApiClient(serverId); return apiClient.updateUserItemRating(apiClient.getCurrentUserId(), id, isLiked); } - function played(id, isPlayed) { - var apiClient = connectionManager.currentApiClient(); + function played(id, serverId, isPlayed) { + var apiClient = connectionManager.getApiClient(serverId); var method = isPlayed ? 'markPlayed' : 'markUnplayed'; return apiClient[method](apiClient.getCurrentUserId(), id, new Date()); } - function favorite(id, isFavorite) { - var apiClient = connectionManager.currentApiClient(); + function favorite(id, serverId, isFavorite) { + var apiClient = connectionManager.getApiClient(serverId); return apiClient.updateFavoriteStatus(apiClient.getCurrentUserId(), id, isFavorite); } - function clearLike(id) { + function clearLike(id, serverId) { - var apiClient = connectionManager.currentApiClient(); + var apiClient = connectionManager.getApiClient(serverId); return apiClient.clearUserItemRating(apiClient.getCurrentUserId(), id); } diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index f359495582..acb73b710e 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -599,7 +599,6 @@ var Dashboard = { }; if (Dashboard.isRunningInCordova() && !browserInfo.safari) { - caps.SupportsOfflineAccess = true; caps.SupportsSync = true; caps.SupportsContentUploading = true; }