diff --git a/dashboard-ui/bower_components/emby-apiclient/.bower.json b/dashboard-ui/bower_components/emby-apiclient/.bower.json index 3ca0e4833a..b396216f32 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.68", - "_release": "1.1.68", + "version": "1.1.70", + "_release": "1.1.70", "_resolution": { "type": "version", - "tag": "1.1.68", - "commit": "e70a2bf8680faf2b1f7ae59bf8fd97d7f969fc28" + "tag": "1.1.70", + "commit": "7d03528fbb6d397ae53032e72e6230606e043b90" }, "_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 8f530820e9..d70fab7be8 100644 --- a/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js +++ b/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js @@ -1318,14 +1318,20 @@ var md5 = getConnectPasswordHash(password); + var data = { + email: email, + userName: username, + password: md5 + }; + + if (options.grecaptcha) { + data.grecaptcha = options.grecaptcha; + } + ajax({ type: "POST", url: "https://connect.emby.media/service/register", - data: { - email: email, - userName: username, - password: md5 - }, + data: data, dataType: "json", contentType: 'application/x-www-form-urlencoded; charset=UTF-8', headers: { diff --git a/dashboard-ui/bower_components/emby-webcomponents/.bower.json b/dashboard-ui/bower_components/emby-webcomponents/.bower.json index f698ae741e..9572ade724 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.126", - "_release": "1.4.126", + "version": "1.4.127", + "_release": "1.4.127", "_resolution": { "type": "version", - "tag": "1.4.126", - "commit": "1b55a0a69665c97be4bb2d60e03940615f73c7fd" + "tag": "1.4.127", + "commit": "90c7b31f36c7c56406492a2c396c879817ce0303" }, "_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_target": "^1.2.0", diff --git a/dashboard-ui/bower_components/emby-webcomponents/browserdeviceprofile.js b/dashboard-ui/bower_components/emby-webcomponents/browserdeviceprofile.js index a296629528..b3d6c6f968 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/browserdeviceprofile.js +++ b/dashboard-ui/bower_components/emby-webcomponents/browserdeviceprofile.js @@ -145,40 +145,45 @@ define(['browser'], function (browser) { return browser.tizen || browser.web0s; } - function getDirectPlayProfileForVideoContainer(container) { + function getDirectPlayProfileForVideoContainer(container, videoAudioCodecs) { var supported = false; + var profileContainer = container; switch (container) { case 'asf': supported = browser.tizen || isEdgeUniversal(); + videoAudioCodecs = []; break; - case '3gp': case 'avi': - case 'flv': + supported = isEdgeUniversal(); + break; case 'mpg': case 'mpeg': + supported = isEdgeUniversal(); + break; + case '3gp': + case 'flv': case 'mts': case 'trp': case 'vob': case 'vro': supported = browser.tizen; break; + case 'mov': + supported = browser.chrome || isEdgeUniversal(); + break; case 'm2ts': - supported = browser.tizen || browser.web0s; + supported = browser.tizen || browser.web0s || isEdgeUniversal(); break; case 'wmv': supported = browser.tizen || browser.web0s || isEdgeUniversal(); + videoAudioCodecs = []; break; case 'ts': - supported = browser.tizen || browser.web0s; - if (supported) { - return { - Container: 'ts,mpegts', - Type: 'Video' - }; - } + supported = browser.tizen || browser.web0s || isEdgeUniversal(); + profileContainer = 'ts,mpegts'; break; default: break; @@ -189,8 +194,9 @@ define(['browser'], function (browser) { } return { - Container: container, - Type: 'Video' + Container: profileContainer, + Type: 'Video', + AudioCodec: videoAudioCodecs.join(',') }; } @@ -291,7 +297,7 @@ define(['browser'], function (browser) { if (canPlayMkv) { profile.DirectPlayProfiles.push({ - Container: 'mkv,mov', + Container: 'mkv', Type: 'Video', VideoCodec: 'h264', AudioCodec: videoAudioCodecs.join(',') @@ -299,15 +305,15 @@ define(['browser'], function (browser) { } // These are formats we can't test for but some devices will support - ['m2ts', 'wmv', 'ts', 'asf'].map(getDirectPlayProfileForVideoContainer).filter(function (i) { + ['m2ts', 'mov', 'wmv', 'ts', 'asf', 'avi', 'mpg', 'mpeg'].map(function (container) { + return getDirectPlayProfileForVideoContainer(container, videoAudioCodecs); + }).filter(function (i) { return i != null; - }).forEach(function (i) { - profile.DirectPlayProfiles.push(i); }); - ['opus', 'mp3', 'aac', 'flac', 'webma', 'wma'].filter(canPlayAudioFormat).forEach(function (audioFormat) { + ['opus', 'mp3', 'aac', 'flac', 'webma', 'wma', 'wav'].filter(canPlayAudioFormat).forEach(function (audioFormat) { profile.DirectPlayProfiles.push({ Container: audioFormat == 'webma' ? 'webma,webm' : audioFormat, @@ -564,11 +570,13 @@ define(['browser'], function (browser) { MimeType: 'video/mp4' }); - profile.ResponseProfiles.push({ - Type: 'Video', - Container: 'mov', - MimeType: 'video/webm' - }); + if (browser.chrome) { + profile.ResponseProfiles.push({ + Type: 'Video', + Container: 'mov', + MimeType: 'video/webm' + }); + } return profile; }; diff --git a/dashboard-ui/bower_components/emby-webcomponents/dialog/dialog.js b/dashboard-ui/bower_components/emby-webcomponents/dialog/dialog.js index 0b5b4295c8..5621167f03 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/dialog/dialog.js +++ b/dashboard-ui/bower_components/emby-webcomponents/dialog/dialog.js @@ -5,18 +5,6 @@ define(['layoutManager', 'globalize'], function (layoutManager, globalize) { require(['actionsheet'], function (actionSheet) { - var items = []; - - items.push({ - name: globalize.translate('sharedcomponents#ButtonOk'), - id: 'ok' - }); - - items.push({ - name: globalize.translate('sharedcomponents#ButtonCancel'), - id: 'cancel' - }); - actionSheet.show({ title: options.text, diff --git a/dashboard-ui/bower_components/emby-webcomponents/listview/listview.js b/dashboard-ui/bower_components/emby-webcomponents/listview/listview.js index ec64b305aa..dc8c88f898 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/listview/listview.js +++ b/dashboard-ui/bower_components/emby-webcomponents/listview/listview.js @@ -196,8 +196,9 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan var positionTicksData = item.UserData && item.UserData.PlaybackPositionTicks ? (' data-positionticks="' + item.UserData.PlaybackPositionTicks + '"') : ''; var collectionIdData = options.collectionId ? (' data-collectionid="' + options.collectionId + '"') : ''; var playlistIdData = options.playlistId ? (' data-playlistid="' + options.playlistId + '"') : ''; + var seriesIdData = item.SeriesId ? (' data-seriesid="' + item.SeriesId + '"') : ''; - html += '<' + outerTagName + ' class="' + cssClass + '" data-index="' + i + '"' + playlistItemId + ' data-action="' + action + '" data-isfolder="' + item.IsFolder + '" data-id="' + item.Id + '" data-serverid="' + item.ServerId + '" data-mediatype="' + item.MediaType + '" data-type="' + item.Type + '"' + positionTicksData + collectionIdData + playlistIdData + '>'; + html += '<' + outerTagName + ' class="' + cssClass + '" data-index="' + i + '"' + playlistItemId + ' data-action="' + action + '" data-isfolder="' + item.IsFolder + '" data-id="' + item.Id + '" data-serverid="' + item.ServerId + '" data-mediatype="' + item.MediaType + '" data-type="' + item.Type + '"' + positionTicksData + collectionIdData + playlistIdData + seriesIdData + '>'; if (!clickEntireItem && options.dragHandle) { html += ''; diff --git a/dashboard-ui/bower_components/emby-webcomponents/shortcuts.js b/dashboard-ui/bower_components/emby-webcomponents/shortcuts.js index 01c8f91edb..cc5fe61c9e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/shortcuts.js +++ b/dashboard-ui/bower_components/emby-webcomponents/shortcuts.js @@ -169,6 +169,7 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'embyRouter', 'g Type: card.getAttribute('data-type'), Id: card.getAttribute('data-id'), ChannelId: card.getAttribute('data-channelid'), + SeriesId: card.getAttribute('data-seriesid'), ServerId: card.getAttribute('data-serverid'), MediaType: card.getAttribute('data-mediatype'), IsFolder: card.getAttribute('data-isfolder') == 'true', diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index 5150c2f2d5..40eea361ec 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -802,6 +802,13 @@ }); } + if (item.SeriesId) { + atts.push({ + name: 'seriesid', + value: item.SeriesId + }); + } + if (options.collectionId) { atts.push({ name: 'collectionid', diff --git a/dashboard-ui/scripts/mediaplayer.js b/dashboard-ui/scripts/mediaplayer.js index 101c19150c..e946a04b9b 100644 --- a/dashboard-ui/scripts/mediaplayer.js +++ b/dashboard-ui/scripts/mediaplayer.js @@ -352,7 +352,7 @@ define(['appSettings', 'userSettings', 'appStorage', 'datetime'], function (appS promise = ApiClient.getCurrentUser().then(function (user) { - if (!user.Configuration.EnableNextEpisodeAutoPlay) { + if (!user.Configuration.EnableNextEpisodeAutoPlay || !firstItem.SeriesId) { return null; } diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index 4a01123854..f1474dd6e6 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -416,10 +416,16 @@ var Dashboard = { restartServer: function () { + var apiClient = window.ApiClient; + + if (!apiClient) { + return; + } + Dashboard.suppressAjaxErrors = true; Dashboard.showLoadingMsg(); - ApiClient.restartServer().then(function () { + apiClient.restartServer().then(function () { setTimeout(function () { Dashboard.reloadPageWhenServerAvailable(); @@ -432,8 +438,14 @@ var Dashboard = { reloadPageWhenServerAvailable: function (retryCount) { + var apiClient = window.ApiClient; + + if (!apiClient) { + return; + } + // Don't use apiclient method because we don't want it reporting authentication under the old version - ApiClient.getJSON(ApiClient.getUrl("System/Info")).then(function (info) { + apiClient.getJSON(apiClient.getUrl("System/Info")).then(function (info) { // If this is back to false, the restart completed if (!info.HasPendingRestart) { @@ -468,7 +480,7 @@ var Dashboard = { getPluginSecurityInfo: function () { - var apiClient = ApiClient; + var apiClient = window.ApiClient; if (!apiClient) {