diff --git a/dashboard-ui/bower_components/emby-webcomponents/itemhelper.js b/dashboard-ui/bower_components/emby-webcomponents/itemhelper.js index f03824e8dc..459af19c7a 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/itemhelper.js +++ b/dashboard-ui/bower_components/emby-webcomponents/itemhelper.js @@ -13,7 +13,7 @@ define(['apphost'], function (appHost) { item = item.ProgramInfo || item; } - var name = ((item.Type === 'Program' || item.Type === 'Recording') && item.IsSeries ? item.EpisodeTitle : item.Name) || ''; + var name = ((item.Type === 'Program' || item.Type === 'Recording') && (item.IsSeries || item.EpisodeTitle) ? item.EpisodeTitle : item.Name) || ''; if (item.Type === "TvChannel") { diff --git a/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.js b/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.js index f641fe2364..90c17e8c6a 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.js +++ b/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.js @@ -225,7 +225,7 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', ' }); } - if (item.IsSeries && item.EpisodeTitle && options.episodeTitle !== false) { + if ((item.IsSeries || item.EpisodeTitle) && options.episodeTitle !== false) { miscInfo.push(itemHelper.getDisplayName(item)); } diff --git a/dashboard-ui/bower_components/emby-webcomponents/playback/playbackmanager.js b/dashboard-ui/bower_components/emby-webcomponents/playback/playbackmanager.js index 732ac7c4f7..293ff6d3bc 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/playback/playbackmanager.js +++ b/dashboard-ui/bower_components/emby-webcomponents/playback/playbackmanager.js @@ -1780,7 +1780,7 @@ define(['events', 'datetime', 'appSettings', 'pluginManager', 'userSettings', 'g var contentType; var transcodingOffsetTicks = 0; var playerStartPositionTicks = startPosition; - var liveStreamId; + var liveStreamId = mediaSource.LiveStreamId; var playMethod = 'Transcode'; @@ -1813,7 +1813,6 @@ define(['events', 'datetime', 'appSettings', 'pluginManager', 'userSettings', 'g if (mediaSource.LiveStreamId) { directOptions.LiveStreamId = mediaSource.LiveStreamId; - liveStreamId = mediaSource.LiveStreamId; } mediaUrl = apiClient.getUrl('Videos/' + item.Id + '/stream.' + mediaSourceContainer, directOptions); @@ -1868,7 +1867,6 @@ define(['events', 'datetime', 'appSettings', 'pluginManager', 'userSettings', 'g if (mediaSource.LiveStreamId) { directOptions.LiveStreamId = mediaSource.LiveStreamId; - liveStreamId = mediaSource.LiveStreamId; } mediaUrl = apiClient.getUrl('Audio/' + item.Id + '/stream.' + mediaSourceContainer, directOptions); diff --git a/dashboard-ui/components/apphost.js b/dashboard-ui/components/apphost.js index 9aa32f8070..eed45e0640 100644 --- a/dashboard-ui/components/apphost.js +++ b/dashboard-ui/components/apphost.js @@ -114,6 +114,21 @@ define(['appStorage', 'browser'], function (appStorage, browser) { element.msRequestFullscreen; } + function getSyncProfile() { + + return new Promise(function (resolve, reject) { + + require(['browserdeviceprofile', 'qualityoptions', 'appSettings'], function (profileBuilder, qualityoptions, appSettings) { + + var profile = profileBuilder(); + + profile.MaxStaticMusicBitrate = appSettings.maxStaticMusicBitrate(); + + resolve(profile); + }); + }); + } + var supportedFeatures = function () { var features = [ @@ -225,6 +240,7 @@ define(['appStorage', 'browser'], function (appStorage, browser) { }, capabilities: getCapabilities, preferVisualCards: browser.android || browser.chrome, - moreIcon: browser.safari || browser.edge ? 'dots-horiz' : 'dots-vert' + moreIcon: browser.safari || browser.edge ? 'dots-horiz' : 'dots-vert', + getSyncProfile: getSyncProfile }; }); \ No newline at end of file diff --git a/dashboard-ui/scripts/livetvitems.js b/dashboard-ui/scripts/livetvitems.js index 23dc53e6b6..10ed04eaa5 100644 --- a/dashboard-ui/scripts/livetvitems.js +++ b/dashboard-ui/scripts/livetvitems.js @@ -1,4 +1,4 @@ -define(['cardBuilder', 'apphost', 'imageLoader', 'emby-itemscontainer'], function (cardBuilder, appHost, imageLoader) { +define(['cardBuilder', 'apphost', 'imageLoader', 'libraryBrowser', 'emby-itemscontainer'], function (cardBuilder, appHost, imageLoader, libraryBrowser) { 'use strict'; return function (view, params) { @@ -7,7 +7,8 @@ var query = { UserId: Dashboard.getCurrentUserId(), StartIndex: 0, - Fields: "ChannelInfo" + Fields: "ChannelInfo", + Limit: libraryBrowser.getDefaultPageSize() }; if (params.type == 'Recordings') { @@ -27,7 +28,7 @@ } function getSavedQueryKey() { - return LibraryBrowser.getSavedQueryKey(); + return libraryBrowser.getSavedQueryKey(); } function reloadItems(page) { @@ -48,7 +49,7 @@ window.scrollTo(0, 0); var html = ''; - var pagingHtml = LibraryBrowser.getQueryPagingHtml({ + var pagingHtml = libraryBrowser.getQueryPagingHtml({ startIndex: query.StartIndex, limit: query.Limit, totalRecordCount: result.TotalRecordCount, @@ -109,7 +110,7 @@ elems[i].addEventListener('click', onPreviousPageClick); } - LibraryBrowser.saveQueryValues(getSavedQueryKey(), query); + libraryBrowser.saveQueryValues(getSavedQueryKey(), query); Dashboard.hideLoadingMsg(); }); @@ -178,7 +179,7 @@ var viewkey = getSavedQueryKey(); - LibraryBrowser.loadSavedQueryValues(viewkey, query); + libraryBrowser.loadSavedQueryValues(viewkey, query); reloadItems(page); }); diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index 4a4e448b99..a5930f0d02 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -648,43 +648,6 @@ var Dashboard = { } options.quality = quality; } - }, - - getDeviceProfile: function (maxHeight, profileOptions) { - - return new Promise(function (resolve, reject) { - - require(['browserdeviceprofile', 'qualityoptions', 'appSettings'], function (profileBuilder, qualityoptions, appSettings) { - - var profile = profileBuilder(Object.assign(profileOptions || {}, { - })); - - if (!(AppInfo.isNativeApp && browserInfo.android) && !browserInfo.edge && !browserInfo.msie) { - // libjass not working here - profile.SubtitleProfiles.push({ - Format: 'ass', - Method: 'External' - }); - profile.SubtitleProfiles.push({ - Format: 'ssa', - Method: 'External' - }); - } - - var bitrateSetting = appSettings.maxStreamingBitrate(); - - if (!maxHeight) { - maxHeight = qualityoptions.getVideoQualityOptions(bitrateSetting).filter(function (q) { - return q.selected; - })[0].maxHeight; - } - - profile.MaxStreamingBitrate = bitrateSetting; - profile.MaxStaticMusicBitrate = appSettings.maxStaticMusicBitrate(); - - resolve(profile); - }); - }); } }; @@ -753,11 +716,6 @@ var AppInfo = {}; Events.on(apiClient, 'requestfail', Dashboard.onRequestFail); } - function getSyncProfile() { - - return Dashboard.getDeviceProfile(Math.max(screen.height, screen.width)); - } - function onApiClientCreated(e, newApiClient) { initializeApiClient(newApiClient); @@ -814,49 +772,51 @@ var AppInfo = {}; //localStorage.clear(); function createConnectionManager() { - return getSyncProfile().then(function (deviceProfile) { + return new Promise(function (resolve, reject) { - return new Promise(function (resolve, reject) { + require(['connectionManagerFactory', 'apphost', 'credentialprovider', 'events', 'userSettings'], function (connectionManagerExports, apphost, credentialProvider, events, userSettings) { - require(['connectionManagerFactory', 'apphost', 'credentialprovider', 'events', 'userSettings'], function (connectionManagerExports, apphost, credentialProvider, events, userSettings) { + window.MediaBrowser = Object.assign(window.MediaBrowser || {}, connectionManagerExports); - window.MediaBrowser = Object.assign(window.MediaBrowser || {}, connectionManagerExports); + var credentialProviderInstance = new credentialProvider(); - var credentialProviderInstance = new credentialProvider(); + var promises = [apphost.getSyncProfile(), apphost.appInfo()]; - apphost.appInfo().then(function (appInfo) { + Promise.all(promises).then(function (responses) { - var capabilities = Dashboard.capabilities(); - capabilities.DeviceProfile = deviceProfile; + var deviceProfile = responses[0]; + var appInfo = responses[1]; - var connectionManager = new MediaBrowser.ConnectionManager(credentialProviderInstance, appInfo.appName, appInfo.appVersion, appInfo.deviceName, appInfo.deviceId, capabilities, window.devicePixelRatio); + var capabilities = Dashboard.capabilities(); + capabilities.DeviceProfile = deviceProfile; - defineConnectionManager(connectionManager); - bindConnectionManagerEvents(connectionManager, events, userSettings); + var connectionManager = new MediaBrowser.ConnectionManager(credentialProviderInstance, appInfo.appName, appInfo.appVersion, appInfo.deviceName, appInfo.deviceId, capabilities, window.devicePixelRatio); - if (Dashboard.isConnectMode()) { + defineConnectionManager(connectionManager); + bindConnectionManagerEvents(connectionManager, events, userSettings); + if (Dashboard.isConnectMode()) { + + resolve(); + + } else { + + console.log('loading ApiClient singleton'); + + return getRequirePromise(['apiclient']).then(function (apiClientFactory) { + + console.log('creating ApiClient singleton'); + + var apiClient = new apiClientFactory(Dashboard.serverAddress(), appInfo.appName, appInfo.appVersion, appInfo.deviceName, appInfo.deviceId, window.devicePixelRatio); + apiClient.enableAutomaticNetworking = false; + connectionManager.addApiClient(apiClient); + require(['css!' + apiClient.getUrl('Branding/Css')]); + window.ApiClient = apiClient; + localApiClient = apiClient; + console.log('loaded ApiClient singleton'); resolve(); - - } else { - - console.log('loading ApiClient singleton'); - - return getRequirePromise(['apiclient']).then(function (apiClientFactory) { - - console.log('creating ApiClient singleton'); - - var apiClient = new apiClientFactory(Dashboard.serverAddress(), appInfo.appName, appInfo.appVersion, appInfo.deviceName, appInfo.deviceId, window.devicePixelRatio); - apiClient.enableAutomaticNetworking = false; - connectionManager.addApiClient(apiClient); - require(['css!' + apiClient.getUrl('Branding/Css')]); - window.ApiClient = apiClient; - localApiClient = apiClient; - console.log('loaded ApiClient singleton'); - resolve(); - }); - } - }); + }); + } }); }); });