diff --git a/components/details/ItemDetails.bs b/components/details/ItemDetails.bs
index d3ef3c02d..e0ccca34a 100644
--- a/components/details/ItemDetails.bs
+++ b/components/details/ItemDetails.bs
@@ -331,7 +331,7 @@ sub renderDetailContent()
setFieldText("title", itemData.name)
- hideMediaDesc = moonfinPlugin.ParseBoolSetting(chainLookupReturn(m.global.session, "user.settings.`ui.itemdetail.hideMediaDescription`", false), false) and (isEpisode() or LCase(m.top.itemType) = "movie")
+ hideMediaDesc = ItemHidesMediaDescription(m.top.itemType, m.top.seerrOnly = true, m.global.session)
taglineNode = m.top.findNode("tagline")
if isValid(taglineNode)
diff --git a/components/details/ModernItemDetails.bs b/components/details/ModernItemDetails.bs
index cf80ba0e2..56f72898b 100644
--- a/components/details/ModernItemDetails.bs
+++ b/components/details/ModernItemDetails.bs
@@ -522,7 +522,7 @@ sub showUpNextCard()
m.upNextCard.title = parts.join(" - ")
overviewText = chainLookupReturn(ep, "json.Overview", "")
- if hidesMediaDescription()
+ if hidesMediaDescription("episode")
overviewText = ""
else if isValidAndNotEmpty(overviewText)
overviewText = stripHtmlTags(overviewText)
@@ -1235,7 +1235,7 @@ sub renderDetailContent()
setFieldText("title", itemData.name)
- hideMediaDesc = hidesMediaDescription() and (isEpisode() or LCase(m.top.itemType) = "movie")
+ hideMediaDesc = hidesMediaDescription()
taglineNode = m.top.findNode("tagline")
if isValid(taglineNode)
diff --git a/components/details/NouveauItemDetails.bs b/components/details/NouveauItemDetails.bs
index 7c7559e88..2f66f2d16 100644
--- a/components/details/NouveauItemDetails.bs
+++ b/components/details/NouveauItemDetails.bs
@@ -334,7 +334,7 @@ sub renderDetailContent()
' The name stands in until a logo arrives, and a title with no logo keeps it
if not isValidAndNotEmpty(m.top.logoImageURI) then m.titleNode.visible = true
- hideMediaDesc = hidesMediaDescription() and (isEpisode() or LCase(m.top.itemType) = "movie")
+ hideMediaDesc = hidesMediaDescription()
overviewText = itemData.overview
if isValidAndNotEmpty(overviewText) then overviewText = stripHtmlTags(overviewText)
if isPerson() then overviewText = detailSectionLayout.Shows("biography") ? readableText(overviewText) : ""
diff --git a/components/details/SpotlightItemDetails.bs b/components/details/SpotlightItemDetails.bs
index 7a24d8d10..d56bf56f7 100644
--- a/components/details/SpotlightItemDetails.bs
+++ b/components/details/SpotlightItemDetails.bs
@@ -298,7 +298,7 @@ sub renderDetailContent()
setFieldText("title", itemData.name)
m.titleNode.visible = isValidAndNotEmpty(itemData.name) and not m.logoGroup.visible
- hideMediaDesc = hidesMediaDescription() and (isEpisode() or LCase(m.top.itemType) = "movie")
+ hideMediaDesc = hidesMediaDescription()
taglineNode = m.top.findNode("tagline")
if isValid(taglineNode)
diff --git a/components/details/detailPopulationHost.bs b/components/details/detailPopulationHost.bs
index 6038671a8..73b342fa8 100644
--- a/components/details/detailPopulationHost.bs
+++ b/components/details/detailPopulationHost.bs
@@ -21,8 +21,10 @@ const META_INK = "#FFFFFFBF"
' function isSeason() as boolean
' function isMusic() as boolean
-function hidesMediaDescription() as boolean
- return moonfinPlugin.ParseBoolSetting(chainLookupReturn(m.global.session, "user.settings.`ui.itemdetail.hideMediaDescription`", false), false)
+function hidesMediaDescription(overrideType = "" as string) as boolean
+ targetType = isValidAndNotEmpty(overrideType) ? overrideType : (m.top.itemType ?? "")
+ isSeerr = (m.top.seerrOnly = true)
+ return ItemHidesMediaDescription(targetType, isSeerr, m.global.session)
end function
' What the file is, read off the first video and audio stream the way the other
diff --git a/components/music/AlbumDetails.bs b/components/music/AlbumDetails.bs
index 26dd979dd..fc469a458 100644
--- a/components/music/AlbumDetails.bs
+++ b/components/music/AlbumDetails.bs
@@ -109,7 +109,7 @@ sub onPageContentChanged()
end if
overview = json.LookupCI("Overview")
- if isValidAndNotEmpty(overview)
+ if isValidAndNotEmpty(overview) and not ItemHidesMediaDescription("musicalbum", false, m.global.session)
m.albumOverview.text = overview
m.albumOverview.visible = true
else
diff --git a/components/music/ArtistDetails.bs b/components/music/ArtistDetails.bs
index e43a20e9a..bca6fec09 100644
--- a/components/music/ArtistDetails.bs
+++ b/components/music/ArtistDetails.bs
@@ -96,7 +96,7 @@ sub onPageContentChanged()
overview = json.LookupCI("Overview")
end if
- if isValidAndNotEmpty(overview)
+ if isValidAndNotEmpty(overview) and not ItemHidesMediaDescription("musicartist", false, m.global.session)
m.artistOverview.text = overview
m.artistOverview.visible = true
else
diff --git a/components/music/PlaylistDetails.bs b/components/music/PlaylistDetails.bs
index 3e6b57e3d..116006dd2 100644
--- a/components/music/PlaylistDetails.bs
+++ b/components/music/PlaylistDetails.bs
@@ -99,7 +99,7 @@ sub onPageContentChanged()
m.playlistTitle.text = isValid(json.name) ? json.name : ""
overview = json.LookupCI("Overview")
- if isValidAndNotEmpty(overview)
+ if isValidAndNotEmpty(overview) and not ItemHidesMediaDescription("playlist", false, m.global.session)
m.playlistOverview.text = overview
m.playlistOverview.visible = true
else
diff --git a/components/settings/settings.bs b/components/settings/settings.bs
index d7dd4a91b..0af457669 100644
--- a/components/settings/settings.bs
+++ b/components/settings/settings.bs
@@ -1943,7 +1943,7 @@ function reorderSettingsForFlutter(configTree as object) as object
]
detailsDisplay = takeSettings(configTree, ["ui.itemdetail.style", "ui.backdrop.detailBlurAmount", "ui.itemdetail.buttonLayout", "ui.itemdetail.buttonsMaxVisible"])
- detailsContent = takeSettings(configTree, ["ui.itemdetail.metadataLayout", "ui.itemdetail.sections", "ui.itemdetail.expandedTabs", "ui.library.showTechnicalDetails", "ui.itemdetail.hideMediaDescription", "ui.itemdetail.useSeriesThumbnails"])
+ detailsContent = takeSettings(configTree, ["ui.itemdetail.metadataLayout", "ui.itemdetail.sections", "ui.itemdetail.expandedTabs", "ui.library.showTechnicalDetails", "ui.itemdetail.useSeriesThumbnails"])
recommendations = takeSettings(configTree, ["ui.home.recommendationSource"])
ratingSettings = takeSettings(configTree, ["plugin.mdblist.enabled", "plugin.mdblist.ratingSources", "plugin.tmdb.episodeRatings", "plugin.mdblist.showRatingNames", "plugin.mdblist.showRatingBadges", "ui.itemdetail.showRatings"])
themeMusic = takeSettings(configTree, ["playback.thememusic.enabled", "playback.thememusic.loop"])
@@ -2118,10 +2118,13 @@ function reorderSettingsForFlutter(configTree as object) as object
if isValid(detailsScreen)
detailsScreen.title = "Details Page"
detailsScreen.description = "Layout, buttons, sections, ratings, and theme music"
+ mediaDescVisibility = takeChildByTitle(detailsScreen, "Toggle Media Description Visibility")
+ if isValid(mediaDescVisibility) then mediaDescVisibility.clean = true
detailsChildren = [settingsSection("Display")]
detailsChildren.Append(detailsDisplay)
detailsChildren.push(settingsSection("Media Details and Spoilers"))
detailsChildren.Append(detailsContent)
+ pushSettingIfValid(detailsChildren, mediaDescVisibility)
detailsChildren.push(settingsSection("Recommendations"))
detailsChildren.Append(recommendations)
detailsChildren.push(settingsSection("Ratings"))
@@ -3329,6 +3332,7 @@ function settingRequirementMet(requirement as string) as boolean
if requirement = "social" then return achievements.SocialAvailable()
if requirement = "kidsMode" then return kidsMode.Enabled()
if requirement = "notKidsMode" then return not kidsMode.Enabled()
+ if requirement = "seerr" then return GetSeerrConfig().enabled
if Left(requirement, 8) = "setting:"
for each condition in requirement.Split("&&")
if not settingConditionMet(Mid(condition, 9)) then return false
diff --git a/components/tvshows/SeasonEpisodeRow.bs b/components/tvshows/SeasonEpisodeRow.bs
index 18f68f828..bf02536d5 100644
--- a/components/tvshows/SeasonEpisodeRow.bs
+++ b/components/tvshows/SeasonEpisodeRow.bs
@@ -37,7 +37,7 @@ sub itemContentChanged()
unplayedCount: chainLookupReturn(itemData, "json.UserData.UnplayedItemCount", 0)
}
- hideMediaDesc = moonfinPlugin.ParseBoolSetting(chainLookupReturn(m.global.session, "user.settings.`ui.itemdetail.hideMediaDescription`", false), false)
+ hideMediaDesc = ItemHidesMediaDescription("episode", false, m.global.session)
m.episodeOverview.text = (not hideMediaDesc and isValid(itemData.overview)) ? itemData.overview : ""
if not isChainValid(itemData, "json")
diff --git a/components/video/EpisodeBrowserOverlay.bs b/components/video/EpisodeBrowserOverlay.bs
index 289e0a2e8..8c98c8fdf 100644
--- a/components/video/EpisodeBrowserOverlay.bs
+++ b/components/video/EpisodeBrowserOverlay.bs
@@ -42,7 +42,7 @@ sub init()
m.footer.text = tr("Press BACK to close")
m.palette = playbackOverlay.Palette()
- m.hideOverview = toBoolean(chainLookupReturn(m.global.session, "user.settings.`ui.itemdetail.hideMediaDescription`", false))
+ m.hideOverview = ItemHidesMediaDescription("episode", false, m.global.session)
m.opened = false
m.loaded = false
m.numbers = []
diff --git a/locale/en_US/translations.ts b/locale/en_US/translations.ts
index 980587cdd..241ac4bd8 100644
--- a/locale/en_US/translations.ts
+++ b/locale/en_US/translations.ts
@@ -6529,6 +6529,110 @@
Hide the movie or episode descriptive text.
Hide the movie or episode descriptive text.
+
+ Toggle Media Description Visibility
+ Toggle Media Description Visibility
+
+
+ Hide media descriptions from various detail pages.
+ Hide media descriptions from various detail pages.
+
+
+ Local Content
+ Local Content
+
+
+ Hide Movie Description
+ Hide Movie Description
+
+
+ Hide descriptive text on movie details pages.
+ Hide descriptive text on movie details pages.
+
+
+ Hide Show Description
+ Hide Show Description
+
+
+ Hide descriptive text on TV show details pages.
+ Hide descriptive text on TV show details pages.
+
+
+ Hide Season Description
+ Hide Season Description
+
+
+ Hide descriptive text on season details pages.
+ Hide descriptive text on season details pages.
+
+
+ Hide Episode Description
+ Hide Episode Description
+
+
+ Hide descriptive text on episode details pages.
+ Hide descriptive text on episode details pages.
+
+
+ Hide Collection Description
+ Hide Collection Description
+
+
+ Hide descriptive text on collection details pages.
+ Hide descriptive text on collection details pages.
+
+
+ Hide Book Description
+ Hide Book Description
+
+
+ Hide descriptive text on book details pages.
+ Hide descriptive text on book details pages.
+
+
+ Hide Person Biography
+ Hide Person Biography
+
+
+ Hide biographical text on person details pages.
+ Hide biographical text on person details pages.
+
+
+ Hide Music Description
+ Hide Music Description
+
+
+ Hide descriptive text on music and playlist details pages.
+ Hide descriptive text on music and playlist details pages.
+
+
+ Seerr Content
+ Seerr Content
+
+
+ Hide Seerr Movie Description
+ Hide Seerr Movie Description
+
+
+ Hide descriptive text on Seerr movie details pages.
+ Hide descriptive text on Seerr movie details pages.
+
+
+ Hide Seerr Show Description
+ Hide Seerr Show Description
+
+
+ Hide descriptive text on Seerr TV show details pages.
+ Hide descriptive text on Seerr TV show details pages.
+
+
+ Hide Seerr Collection Description
+ Hide Seerr Collection Description
+
+
+ Hide descriptive text on Seerr collection details pages.
+ Hide descriptive text on Seerr collection details pages.
+
How long a show stays in Next Up after you last watched it
How long a show stays in Next Up after you last watched it
diff --git a/settings/settings.json b/settings/settings.json
index e8cdcfdcc..9f3ea5b5f 100644
--- a/settings/settings.json
+++ b/settings/settings.json
@@ -8381,12 +8381,112 @@
"default": "true"
},
{
- "title": "Hide Media Description",
- "description": "Hide the movie or episode descriptive text.",
- "settingName": "ui.itemdetail.hideMediaDescription",
+ "title": "Toggle Media Description Visibility",
+ "description": "Hide media descriptions from various detail pages.",
"glyph": "description_outlined",
- "type": "bool",
- "default": "false"
+ "clean": true,
+ "children": [
+ {
+ "title": "Local Content",
+ "type": "section"
+ },
+ {
+ "title": "Hide Movie Description",
+ "description": "Hide descriptive text on movie details pages.",
+ "settingName": "ui.itemdetail.hideMediaDescriptionMovie",
+ "glyph": "movie_outlined",
+ "type": "bool",
+ "default": "false"
+ },
+ {
+ "title": "Hide Show Description",
+ "description": "Hide descriptive text on TV show details pages.",
+ "settingName": "ui.itemdetail.hideMediaDescriptionShow",
+ "glyph": "tv",
+ "type": "bool",
+ "default": "false"
+ },
+ {
+ "title": "Hide Season Description",
+ "description": "Hide descriptive text on season details pages.",
+ "settingName": "ui.itemdetail.hideMediaDescriptionSeason",
+ "glyph": "video_library",
+ "type": "bool",
+ "default": "false"
+ },
+ {
+ "title": "Hide Episode Description",
+ "description": "Hide descriptive text on episode details pages.",
+ "settingName": "ui.itemdetail.hideMediaDescriptionEpisode",
+ "glyph": "tv",
+ "type": "bool",
+ "default": "false"
+ },
+ {
+ "title": "Hide Collection Description",
+ "description": "Hide descriptive text on collection details pages.",
+ "settingName": "ui.itemdetail.hideMediaDescriptionBoxSet",
+ "glyph": "collections",
+ "type": "bool",
+ "default": "false"
+ },
+ {
+ "title": "Hide Book Description",
+ "description": "Hide descriptive text on book details pages.",
+ "settingName": "ui.itemdetail.hideMediaDescriptionBook",
+ "glyph": "collections_bookmark",
+ "type": "bool",
+ "default": "false"
+ },
+ {
+ "title": "Hide Person Biography",
+ "description": "Hide biographical text on person details pages.",
+ "settingName": "ui.itemdetail.hideMediaDescriptionPerson",
+ "glyph": "person",
+ "type": "bool",
+ "default": "false"
+ },
+ {
+ "title": "Hide Music Description",
+ "description": "Hide descriptive text on music and playlist details pages.",
+ "settingName": "ui.itemdetail.hideMediaDescriptionMusic",
+ "glyph": "music_note",
+ "type": "bool",
+ "default": "false"
+ },
+ {
+ "title": "Seerr Content",
+ "type": "section",
+ "requires": "seerr"
+ },
+ {
+ "title": "Hide Seerr Movie Description",
+ "description": "Hide descriptive text on Seerr movie details pages.",
+ "settingName": "ui.itemdetail.hideMediaDescriptionSeerrMovie",
+ "glyph": "movie_outlined",
+ "type": "bool",
+ "default": "false",
+ "requires": "seerr"
+ },
+ {
+ "title": "Hide Seerr Show Description",
+ "description": "Hide descriptive text on Seerr TV show details pages.",
+ "settingName": "ui.itemdetail.hideMediaDescriptionSeerrShow",
+ "glyph": "tv",
+ "type": "bool",
+ "default": "false",
+ "requires": "seerr"
+ },
+ {
+ "title": "Hide Seerr Collection Description",
+ "description": "Hide descriptive text on Seerr collection details pages.",
+ "settingName": "ui.itemdetail.hideMediaDescriptionSeerrCollection",
+ "glyph": "collections",
+ "type": "bool",
+ "default": "false",
+ "requires": "seerr"
+ }
+ ]
},
{
"title": "Use Series Thumbnails",
diff --git a/source/utils/SeerrUtils.bs b/source/utils/SeerrUtils.bs
index 863534751..0e2528faa 100644
--- a/source/utils/SeerrUtils.bs
+++ b/source/utils/SeerrUtils.bs
@@ -1491,6 +1491,7 @@ sub ShowSeerrDetails(mediaItem as object)
if isValidStringValue(mediaItem.mediaType) then mediaType = mediaItem.mediaType
detailsScreen = CreateObject("roSGNode", SeerrDetailScreenComponent())
+ detailsScreen.itemType = isStringEqual(mediaType, "tv") ? "series" : (isStringEqual(mediaType, "collection") ? "collection" : "movie")
detailsScreen.seerrTarget = {
tmdbId: mediaItem.tmdbId.toStr(),
mediaType: mediaType
diff --git a/source/utils/misc.bs b/source/utils/misc.bs
index 693a1a729..d572d4ed3 100644
--- a/source/utils/misc.bs
+++ b/source/utils/misc.bs
@@ -1431,3 +1431,81 @@ function normalizeDetailScreenStyleToken(value as dynamic) as string
return "modern"
end function
+
+' Whether descriptive/overview text should be hidden for an item type, avoiding spoilers.
+' Evaluates granular user settings with legacy fallback to ui.itemdetail.hideMediaDescription.
+function ItemHidesMediaDescription(target as dynamic, isSeerr = false as boolean, sessionObj = invalid as dynamic) as boolean
+ if get_setting("global.kids.enabled", "false") = "true" then return true
+
+ rawType = ""
+ targetIsSeerr = isSeerr
+ if isValid(target)
+ targetType = Type(target)
+ if targetType = "String" or targetType = "roString"
+ rawType = target
+ else if targetType = "roSGNode" or targetType = "roAssociativeArray"
+ if target.seerrOnly = true or target.isSeerr = true or target._seerrMediaId <> invalid
+ targetIsSeerr = true
+ end if
+ if isValid(target.itemType)
+ rawType = target.itemType
+ else if isValid(target.type)
+ rawType = target.type
+ else if isChainValid(target, "json.Type")
+ rawType = target.json.Type
+ else if isChainValid(target, "json.type")
+ rawType = target.json.type
+ end if
+ end if
+ end if
+
+ resolvedSession = sessionObj
+ if not isValid(resolvedSession) and isValid(m) and isValid(m.global) and isValid(m.global.session)
+ resolvedSession = m.global.session
+ end if
+ if not isValid(resolvedSession) or not isValid(resolvedSession.user) or not isValid(resolvedSession.user.settings)
+ return false
+ end if
+
+ legacyHide = toBoolean(chainLookupReturn(resolvedSession, "user.settings.`ui.itemdetail.hideMediaDescription`", false))
+ normalizedType = LCase(rawType)
+
+ if targetIsSeerr
+ if normalizedType = "movie"
+ movieHide = chainLookupReturn(resolvedSession, "user.settings.`ui.itemdetail.hideMediaDescriptionSeerrMovie`", invalid)
+ if isValid(movieHide) then return toBoolean(movieHide)
+ return legacyHide
+ else if normalizedType = "series" or normalizedType = "show" or normalizedType = "tv"
+ return toBoolean(chainLookupReturn(resolvedSession, "user.settings.`ui.itemdetail.hideMediaDescriptionSeerrShow`", false))
+ else if normalizedType = "boxset" or normalizedType = "collection"
+ return toBoolean(chainLookupReturn(resolvedSession, "user.settings.`ui.itemdetail.hideMediaDescriptionSeerrCollection`", false))
+ else if normalizedType = "person"
+ return toBoolean(chainLookupReturn(resolvedSession, "user.settings.`ui.itemdetail.hideMediaDescriptionPerson`", false))
+ end if
+ return false
+ end if
+
+ if normalizedType = "movie"
+ movieHide = chainLookupReturn(resolvedSession, "user.settings.`ui.itemdetail.hideMediaDescriptionMovie`", invalid)
+ if isValid(movieHide) then return toBoolean(movieHide)
+ return legacyHide
+ else if normalizedType = "series" or normalizedType = "show" or normalizedType = "tv"
+ return toBoolean(chainLookupReturn(resolvedSession, "user.settings.`ui.itemdetail.hideMediaDescriptionShow`", false))
+ else if normalizedType = "season"
+ return toBoolean(chainLookupReturn(resolvedSession, "user.settings.`ui.itemdetail.hideMediaDescriptionSeason`", false))
+ else if normalizedType = "episode"
+ episodeHide = chainLookupReturn(resolvedSession, "user.settings.`ui.itemdetail.hideMediaDescriptionEpisode`", invalid)
+ if isValid(episodeHide) then return toBoolean(episodeHide)
+ return legacyHide
+ else if normalizedType = "boxset" or normalizedType = "collection"
+ return toBoolean(chainLookupReturn(resolvedSession, "user.settings.`ui.itemdetail.hideMediaDescriptionBoxSet`", false))
+ else if normalizedType = "book" or normalizedType = "audiobook"
+ return toBoolean(chainLookupReturn(resolvedSession, "user.settings.`ui.itemdetail.hideMediaDescriptionBook`", false))
+ else if normalizedType = "person"
+ return toBoolean(chainLookupReturn(resolvedSession, "user.settings.`ui.itemdetail.hideMediaDescriptionPerson`", false))
+ else if normalizedType = "musicalbum" or normalizedType = "musicartist" or normalizedType = "audio" or normalizedType = "playlist"
+ return toBoolean(chainLookupReturn(resolvedSession, "user.settings.`ui.itemdetail.hideMediaDescriptionMusic`", false))
+ end if
+
+ return false
+end function
diff --git a/source/utils/seerrDetailHost.bs b/source/utils/seerrDetailHost.bs
index a064d9799..dc8fe3727 100644
--- a/source/utils/seerrDetailHost.bs
+++ b/source/utils/seerrDetailHost.bs
@@ -10,6 +10,7 @@ sub onSeerrTargetChanged()
if not isValid(target) or not isValidAndNotEmpty(target.tmdbId) then return
m.top.seerrOnly = true
+ m.top.itemType = isStringEqual(target.mediaType, "tv") ? "series" : (isStringEqual(target.mediaType, "collection") ? "collection" : "movie")
EnsureSeerrPublicSettings()
m.seerrDetailsTask = CreateObject("roSGNode", "SeerrAPITask")
diff --git a/source/utils/session.bs b/source/utils/session.bs
index fa00ac385..0393f098d 100644
--- a/source/utils/session.bs
+++ b/source/utils/session.bs
@@ -186,6 +186,21 @@ namespace session
end if
end for
+ if userSettings.doesExist("ui.itemdetail.hideMediaDescription") and toBoolean(userSettings["ui.itemdetail.hideMediaDescription"]) = true
+ if not userSettings.doesExist("ui.itemdetail.hideMediaDescriptionMovie")
+ tmpSettingArray["ui.itemdetail.hideMediaDescriptionMovie"] = true
+ registry_write("ui.itemdetail.hideMediaDescriptionMovie", "true", tmpSession.user.id)
+ end if
+ if not userSettings.doesExist("ui.itemdetail.hideMediaDescriptionEpisode")
+ tmpSettingArray["ui.itemdetail.hideMediaDescriptionEpisode"] = true
+ registry_write("ui.itemdetail.hideMediaDescriptionEpisode", "true", tmpSession.user.id)
+ end if
+ if not userSettings.doesExist("ui.itemdetail.hideMediaDescriptionSeerrMovie")
+ tmpSettingArray["ui.itemdetail.hideMediaDescriptionSeerrMovie"] = true
+ registry_write("ui.itemdetail.hideMediaDescriptionSeerrMovie", "true", tmpSession.user.id)
+ end if
+ end if
+
tmpSettingArray["serverId"] = toBoolean(m.global.session.server.id)
if isValid(m.global.session.server.url)
tmpSettingArray["serverUrl"] = toBoolean(LCase(m.global.session.server.url))
@@ -460,6 +475,17 @@ namespace session
if configTree = invalid then return
tmpSettings = m.global.session.user.settings
+ if toBoolean(tmpSettings["ui.itemdetail.hideMediaDescription"]) = true
+ if not tmpSettings.doesExist("ui.itemdetail.hideMediaDescriptionMovie")
+ tmpSettings["ui.itemdetail.hideMediaDescriptionMovie"] = true
+ end if
+ if not tmpSettings.doesExist("ui.itemdetail.hideMediaDescriptionEpisode")
+ tmpSettings["ui.itemdetail.hideMediaDescriptionEpisode"] = true
+ end if
+ if not tmpSettings.doesExist("ui.itemdetail.hideMediaDescriptionSeerrMovie")
+ tmpSettings["ui.itemdetail.hideMediaDescriptionSeerrMovie"] = true
+ end if
+ end if
session.user.settings.CollectDefaults(configTree, tmpSettings)
session.user.Update("settings", tmpSettings)
diff --git a/source/utils/settingsSync.bs b/source/utils/settingsSync.bs
index 36dd00d6e..c7ff51dc1 100644
--- a/source/utils/settingsSync.bs
+++ b/source/utils/settingsSync.bs
@@ -54,6 +54,17 @@ namespace settingsSync
{ pluginKey: "detailScreenStyle", rokuKey: "ui.itemdetail.style", type: "detailStyle" },
{ pluginKey: "detailExpandedTabs", rokuKey: "ui.itemdetail.expandedTabs", type: "bool" },
{ pluginKey: "hideDetailsMediaDescription", rokuKey: "ui.itemdetail.hideMediaDescription", type: "bool" },
+ { pluginKey: "hideDetailsMediaDescriptionMovie", rokuKey: "ui.itemdetail.hideMediaDescriptionMovie", type: "bool" },
+ { pluginKey: "hideDetailsMediaDescriptionShow", rokuKey: "ui.itemdetail.hideMediaDescriptionShow", type: "bool" },
+ { pluginKey: "hideDetailsMediaDescriptionSeason", rokuKey: "ui.itemdetail.hideMediaDescriptionSeason", type: "bool" },
+ { pluginKey: "hideDetailsMediaDescriptionEpisode", rokuKey: "ui.itemdetail.hideMediaDescriptionEpisode", type: "bool" },
+ { pluginKey: "hideDetailsMediaDescriptionBoxSet", rokuKey: "ui.itemdetail.hideMediaDescriptionBoxSet", type: "bool" },
+ { pluginKey: "hideDetailsMediaDescriptionBook", rokuKey: "ui.itemdetail.hideMediaDescriptionBook", type: "bool" },
+ { pluginKey: "hideDetailsMediaDescriptionPerson", rokuKey: "ui.itemdetail.hideMediaDescriptionPerson", type: "bool" },
+ { pluginKey: "hideDetailsMediaDescriptionMusic", rokuKey: "ui.itemdetail.hideMediaDescriptionMusic", type: "bool" },
+ { pluginKey: "hideDetailsMediaDescriptionSeerrMovie", rokuKey: "ui.itemdetail.hideMediaDescriptionSeerrMovie", type: "bool" },
+ { pluginKey: "hideDetailsMediaDescriptionSeerrShow", rokuKey: "ui.itemdetail.hideMediaDescriptionSeerrShow", type: "bool" },
+ { pluginKey: "hideDetailsMediaDescriptionSeerrCollection", rokuKey: "ui.itemdetail.hideMediaDescriptionSeerrCollection", type: "bool" },
{ pluginKey: "detailUseSeriesThumbnails", rokuKey: "ui.itemdetail.useSeriesThumbnails", type: "bool" },
{ pluginKey: "hideHomeMediaDescription", rokuKey: "ui.home.hideMediaDescription", type: "bool" },
{ pluginKey: "homeRowsStyle", rokuKey: "ui.home.rowsStyle", type: "direct" },
@@ -330,6 +341,22 @@ namespace settingsSync
end if
end for
+ if toBoolean(profile.hideDetailsMediaDescription) = true
+ userId = m.global.session.user.id
+ if not isValid(profile.hideDetailsMediaDescriptionMovie) and get_user_setting("ui.itemdetail.hideMediaDescriptionMovie") = invalid
+ tmpSettings["ui.itemdetail.hideMediaDescriptionMovie"] = true
+ registry_write("ui.itemdetail.hideMediaDescriptionMovie", "true", userId)
+ end if
+ if not isValid(profile.hideDetailsMediaDescriptionEpisode) and get_user_setting("ui.itemdetail.hideMediaDescriptionEpisode") = invalid
+ tmpSettings["ui.itemdetail.hideMediaDescriptionEpisode"] = true
+ registry_write("ui.itemdetail.hideMediaDescriptionEpisode", "true", userId)
+ end if
+ if not isValid(profile.hideDetailsMediaDescriptionSeerrMovie) and get_user_setting("ui.itemdetail.hideMediaDescriptionSeerrMovie") = invalid
+ tmpSettings["ui.itemdetail.hideMediaDescriptionSeerrMovie"] = true
+ registry_write("ui.itemdetail.hideMediaDescriptionSeerrMovie", "true", userId)
+ end if
+ end if
+
appliedThemeId = tmpSettings["ui.theme.customThemeId"]
if isValidAndNotEmpty(appliedThemeId)
settingsSync.ApplyThemeColorsFromId(appliedThemeId, tmpSettings)