diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index ba19510cde..f56620fda0 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -2300,7 +2300,7 @@ class PlaybackManager { } } - function autoSetNextTracks(prevSource, mediaSource) { + function autoSetNextTracks(prevSource, mediaSource, audio, subtitle) { try { if (!prevSource) return; @@ -2319,8 +2319,11 @@ class PlaybackManager { return; } - rankStreamType(prevSource.DefaultAudioStreamIndex, prevSource, mediaSource, 'Audio'); - rankStreamType(prevSource.DefaultSubtitleStreamIndex, prevSource, mediaSource, 'Subtitle'); + if (audio) + rankStreamType(prevSource.DefaultAudioStreamIndex, prevSource, mediaSource, 'Audio'); + + if (subtitle) + rankStreamType(prevSource.DefaultSubtitleStreamIndex, prevSource, mediaSource, 'Subtitle'); } catch (e) { console.error(`AutoSet - Caught unexpected error: ${e}`); } @@ -2385,8 +2388,18 @@ class PlaybackManager { playOptions.items = null; return getPlaybackMediaSource(player, apiClient, deviceProfile, maxBitrate, item, startPosition, mediaSourceId, audioStreamIndex, subtitleStreamIndex).then(function (mediaSource) { - if (userSettings.enableSetUsingLastTracks()) - autoSetNextTracks(prevSource, mediaSource); + const user = apiClient.getCurrentUser(); + if (user.Configuration.RememberAudioSelections) { + if (user.Configuration.RememberSubtitleSelections) + autoSetNextTracks(prevSource, mediaSource, true, true); + else + autoSetNextTracks(prevSource, mediaSource, true, false); + } else { + if (user.Configuration.RememberSubtitleSelections) + autoSetNextTracks(prevSource, mediaSource, false, true); + else + autoSetNextTracks(prevSource, mediaSource, false, false); + } const streamInfo = createStreamInfo(apiClient, item.MediaType, item, mediaSource, startPosition, player); diff --git a/src/components/playbackSettings/playbackSettings.js b/src/components/playbackSettings/playbackSettings.js index 0de42c6c18..976e8b2f77 100644 --- a/src/components/playbackSettings/playbackSettings.js +++ b/src/components/playbackSettings/playbackSettings.js @@ -180,7 +180,8 @@ import template from './playbackSettings.template.html'; context.querySelector('.chkPreferFmp4HlsContainer').checked = userSettings.preferFmp4HlsContainer(); context.querySelector('.chkEnableCinemaMode').checked = userSettings.enableCinemaMode(); context.querySelector('.chkEnableNextVideoOverlay').checked = userSettings.enableNextVideoInfoOverlay(); - context.querySelector('.chkSetUsingLastTracks').checked = userSettings.enableSetUsingLastTracks(); + context.querySelector('.chkRememberAudioSelections').checked = user.Configuration.RememberAudioSelections || false; + context.querySelector('.chkRememberSubtitleSelections').checked = user.Configuration.RememberSubtitleSelections || false; context.querySelector('.chkExternalVideoPlayer').checked = appSettings.enableSystemExternalPlayers(); setMaxBitrateIntoField(context.querySelector('.selectVideoInNetworkQuality'), true, 'Video'); @@ -222,7 +223,8 @@ import template from './playbackSettings.template.html'; userSettingsInstance.enableCinemaMode(context.querySelector('.chkEnableCinemaMode').checked); userSettingsInstance.enableNextVideoInfoOverlay(context.querySelector('.chkEnableNextVideoOverlay').checked); - userSettingsInstance.enableSetUsingLastTracks(context.querySelector('.chkSetUsingLastTracks').checked); + user.Configuration.RememberAudioSelections = context.querySelector('.chkRememberAudioSelections').checked; + user.Configuration.RememberSubtitleSelections = context.querySelector('.chkRememberSubtitleSelections').checked; userSettingsInstance.chromecastVersion(context.querySelector('.selectChromecastVersion').value); userSettingsInstance.skipForwardLength(context.querySelector('.selectSkipForwardLength').value); userSettingsInstance.skipBackLength(context.querySelector('.selectSkipBackLength').value); diff --git a/src/components/playbackSettings/playbackSettings.template.html b/src/components/playbackSettings/playbackSettings.template.html index 19782334e1..bfc184ea5b 100644 --- a/src/components/playbackSettings/playbackSettings.template.html +++ b/src/components/playbackSettings/playbackSettings.template.html @@ -84,10 +84,18 @@
-
${SetUsingLastTracksHelp}
+
${RememberAudioSelectionsHelp}
+
+ +
+ +
${RememberSubtitleSelectionsHelp}
diff --git a/src/scripts/settings/userSettings.js b/src/scripts/settings/userSettings.js index 0a755d1da2..8ee7dd48d4 100644 --- a/src/scripts/settings/userSettings.js +++ b/src/scripts/settings/userSettings.js @@ -166,19 +166,6 @@ export class UserSettings { return val !== 'false'; } - /** - * Get or set 'SetUsingLastTracks' state. - * @param {boolean|undefined} val - Flag to enable 'SetUsingLastTracks' or undefined. - * @return {boolean} 'SetUsingLastTracks' state. - */ - enableSetUsingLastTracks(val) { - if (val !== undefined) { - return this.set('enableSetUsingLastTracks', val.toString()); - } - - return this.get('enableSetUsingLastTracks', false) !== 'false'; - } - /** * Get or set 'Theme Songs' state. * @param {boolean|undefined} val - Flag to enable 'Theme Songs' or undefined. @@ -570,7 +557,6 @@ export const allowedAudioChannels = currentSettings.allowedAudioChannels.bind(cu export const preferFmp4HlsContainer = currentSettings.preferFmp4HlsContainer.bind(currentSettings); export const enableCinemaMode = currentSettings.enableCinemaMode.bind(currentSettings); export const enableNextVideoInfoOverlay = currentSettings.enableNextVideoInfoOverlay.bind(currentSettings); -export const enableSetUsingLastTracks = currentSettings.enableSetUsingLastTracks.bind(currentSettings); export const enableThemeSongs = currentSettings.enableThemeSongs.bind(currentSettings); export const enableThemeVideos = currentSettings.enableThemeVideos.bind(currentSettings); export const enableFastFadein = currentSettings.enableFastFadein.bind(currentSettings); diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 0ee619667c..57aac5a44c 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1353,7 +1353,11 @@ "RefreshQueued": "Refresh queued.", "ReleaseDate": "Release date", "ReleaseGroup": "Release Group", + "RememberAudioSelections": "Set audio track based on previous item", + "RememberAudioSelectionsHelp": "Try to set the audio track to the closest match to the last video.", "RememberMe": "Remember Me", + "RememberSubtitleSelections": "Set subtitle track based on previous item", + "RememberSubtitleSelectionsHelp": "Try to set the subtitle track to the closest match to the last video.", "Remixer": "Remixer", "RemoveFromCollection": "Remove from collection", "RemoveFromPlaylist": "Remove from playlist", @@ -1401,8 +1405,6 @@ "Settings": "Settings", "SettingsSaved": "Settings saved.", "SettingsWarning": "Changing these values may cause instability or connectivity failures. If you experience any problems, we recommend changing them back to default.", - "SetUsingLastTracks": "Set Subtitle/Audio Tracks with Previous Item", - "SetUsingLastTracksHelp": "Try to set the Subtitle/Audio track to the closest match to the last video.", "Share": "Share", "ShowAdvancedSettings": "Show advanced settings", "ShowIndicatorsFor": "Show indicators for:",