';
@@ -660,7 +666,7 @@ import ServerConnections from '../ServerConnections';
const itemsContainer = elem.querySelector('.itemsContainer');
itemsContainer.fetchData = getNextUpFetchFn(apiClient.serverId());
- itemsContainer.getItemsHtml = getNextUpItemsHtml;
+ itemsContainer.getItemsHtml = getNextUpItemsHtmlFn(userSettings.useEpisodeImagesInNextUpAndResume());
itemsContainer.parentContainer = elem;
}
diff --git a/src/controllers/list.js b/src/controllers/list.js
index d055f9e74..b50b5f91f 100644
--- a/src/controllers/list.js
+++ b/src/controllers/list.js
@@ -1115,7 +1115,11 @@ class ItemsView {
let imageType = userSettings.get(basekey + '-imageType');
if (!imageType && params.type === 'nextup') {
- imageType = 'thumb';
+ if (userSettings.useEpisodeImagesInNextUpAndResume()) {
+ imageType = 'primary';
+ } else {
+ imageType = 'thumb';
+ }
}
return {
diff --git a/src/controllers/shows/tvrecommended.js b/src/controllers/shows/tvrecommended.js
index 82baff8eb..1f523df7b 100644
--- a/src/controllers/shows/tvrecommended.js
+++ b/src/controllers/shows/tvrecommended.js
@@ -119,6 +119,7 @@ import autoFocuser from '../../components/autoFocuser';
cardBuilder.buildCards(result.Items, {
itemsContainer: container,
preferThumb: true,
+ inheritThumb: !userSettings.useEpisodeImagesInNextUpAndResume(),
shape: getThumbShape(),
scalable: true,
overlayPlayButton: true,
@@ -197,6 +198,7 @@ import autoFocuser from '../../components/autoFocuser';
parentContainer: section,
itemsContainer: container,
preferThumb: true,
+ inheritThumb: !userSettings.useEpisodeImagesInNextUpAndResume(),
shape: 'backdrop',
scalable: true,
showTitle: true,
diff --git a/src/scripts/settings/userSettings.js b/src/scripts/settings/userSettings.js
index a548f0cef..96b2d5e7c 100644
--- a/src/scripts/settings/userSettings.js
+++ b/src/scripts/settings/userSettings.js
@@ -253,6 +253,20 @@ export class UserSettings {
return val !== 'false';
}
+ /**
+ * Get or set 'Use Episode Images in Next Up and Continue Watching' state.
+ * @param {string|boolean|undefined} val - Flag to enable 'Use Episode Images in Next Up and Continue Watching' or undefined.
+ * @return {boolean} 'Use Episode Images in Next Up' state.
+ */
+ useEpisodeImagesInNextUpAndResume(val) {
+ if (val !== undefined) {
+ return this.set('useEpisodeImagesInNextUpAndResume', val.toString(), true);
+ }
+
+ val = this.get('useEpisodeImagesInNextUpAndResume', true);
+ return val === 'true';
+ }
+
/**
* Get or set language.
* @param {string|undefined} val - Language.
@@ -494,6 +508,7 @@ export const enableFastFadein = currentSettings.enableFastFadein.bind(currentSet
export const enableBlurhash = currentSettings.enableBlurhash.bind(currentSettings);
export const enableBackdrops = currentSettings.enableBackdrops.bind(currentSettings);
export const detailsBanner = currentSettings.detailsBanner.bind(currentSettings);
+export const useEpisodeImagesInNextUpAndResume = currentSettings.useEpisodeImagesInNextUpAndResume.bind(currentSettings);
export const language = currentSettings.language.bind(currentSettings);
export const dateTimeLocale = currentSettings.dateTimeLocale.bind(currentSettings);
export const chromecastVersion = currentSettings.chromecastVersion.bind(currentSettings);
diff --git a/src/strings/en-us.json b/src/strings/en-us.json
index 9e4132e58..e99165a69 100644
--- a/src/strings/en-us.json
+++ b/src/strings/en-us.json
@@ -1426,6 +1426,8 @@
"Upload": "Upload",
"UseDoubleRateDeinterlacing": "Double the frame rate when deinterlacing",
"UseDoubleRateDeinterlacingHelp": "This setting uses the field rate when deinterlacing, often referred to as bob deinterlacing, which doubles the frame rate of the video to provide full motion like what you would see when viewing interlaced video on a TV.",
+ "UseEpisodeImagesInNextUp": "Use episode images in Next Up and Continue Watching sections",
+ "UseEpisodeImagesInNextUpHelp": "Next Up and Continue Watching sections will use episode images as thumbnails instead of the primary thumbnail of the show.",
"UserAgentHelp": "Supply a custom user-agent HTTP header.",
"UserProfilesIntro": "Jellyfin includes support for user profiles with granular display settings, play state, and parental controls.",
"ValueAlbumCount": "{0} albums",