diff --git a/src/apps/legacy/controllers/itemDetails/index.js b/src/apps/legacy/controllers/itemDetails/index.js index 9154a47ba4..f0b3c45d91 100755 --- a/src/apps/legacy/controllers/itemDetails/index.js +++ b/src/apps/legacy/controllers/itemDetails/index.js @@ -1087,7 +1087,7 @@ function renderMoreFromSeason(view, item, apiClient) { cardBuilder.buildCards(result.Items, { parentContainer: section, itemsContainer: itemsContainer, - shape: 'autooverflow', + shape: 'overflowBackdrop', sectionTitleTagName: 'h2', scalable: true, showTitle: true, diff --git a/src/components/cardbuilder/utils/url.ts b/src/components/cardbuilder/utils/url.ts index 54874b3a4c..819b02323e 100644 --- a/src/components/cardbuilder/utils/url.ts +++ b/src/components/cardbuilder/utils/url.ts @@ -35,6 +35,8 @@ export function getCardImageUrl({ let imgType: ImageType | undefined; let itemId = null; + const skipEpisodeParentPoster = item.Type === 'Episode' && uiAspect != null && uiAspect > 1; + /* eslint-disable sonarjs/no-duplicated-branches */ if (options.preferThumb && item.ImageTags?.Thumb) { imgType = ImageType.Thumb; @@ -68,6 +70,16 @@ export function getCardImageUrl({ imgType = ImageType.Backdrop; imgTag = item.ParentBackdropImageTags[0]; itemId = item.ParentBackdropItemId; + } else if (options.preferParentPoster && !options.preferThumb && item.Type === 'Episode' + && ((item.ParentPrimaryImageTag && item.ParentPrimaryImageItemId) || (item.SeriesPrimaryImageTag && item.SeriesId))) { + imgType = ImageType.Primary; + if (item.ParentPrimaryImageTag && item.ParentPrimaryImageItemId) { + imgTag = item.ParentPrimaryImageTag; + itemId = item.ParentPrimaryImageItemId; + } else { + imgTag = item.SeriesPrimaryImageTag; + itemId = item.SeriesId; + } } else if (item.ImageTags?.Primary && (item.Type !== 'Episode' || item.ChildCount !== 0)) { imgType = ImageType.Primary; imgTag = item.ImageTags.Primary; @@ -80,7 +92,7 @@ export function getCardImageUrl({ if (primaryImageAspectRatio && uiAspect) { coverImage = (Math.abs(primaryImageAspectRatio - uiAspect) / uiAspect) <= 0.2; } - } else if (item.SeriesPrimaryImageTag) { + } else if (item.SeriesPrimaryImageTag && !skipEpisodeParentPoster) { imgType = ImageType.Primary; imgTag = item.SeriesPrimaryImageTag; itemId = item.SeriesId; @@ -97,7 +109,7 @@ export function getCardImageUrl({ if (primaryImageAspectRatio && uiAspect) { coverImage = (Math.abs(primaryImageAspectRatio - uiAspect) / uiAspect) <= 0.2; } - } else if (item.ParentPrimaryImageTag) { + } else if (item.ParentPrimaryImageTag && !skipEpisodeParentPoster) { imgType = ImageType.Primary; imgTag = item.ParentPrimaryImageTag; itemId = item.ParentPrimaryImageItemId; diff --git a/src/components/homesections/sections/recentlyAdded.ts b/src/components/homesections/sections/recentlyAdded.ts index 91297f5866..3edd57549d 100644 --- a/src/components/homesections/sections/recentlyAdded.ts +++ b/src/components/homesections/sections/recentlyAdded.ts @@ -83,6 +83,7 @@ function getLatestItemsHtmlFn( items: items, shape: shape, preferThumb: viewType !== 'movies' && viewType !== 'tvshows' && itemType !== 'Channel' && viewType !== 'music' ? 'auto' : null, + preferParentPoster: true, showUnplayedIndicator: false, showChildCountIndicator: true, context: 'home', diff --git a/src/types/cardOptions.ts b/src/types/cardOptions.ts index 5040b3daef..78f22143fc 100644 --- a/src/types/cardOptions.ts +++ b/src/types/cardOptions.ts @@ -28,6 +28,7 @@ export interface CardOptions { preferThumb?: boolean | string | null; preferDisc?: boolean; preferLogo?: boolean; + preferParentPoster?: boolean; scalable?: boolean; shape?: CardShape; defaultShape?: CardShape;