Skip to content

Commit abe6b7c

Browse files
Home rows details have improved reset logic so stale information isn't displayed
1 parent fcdf156 commit abe6b7c

1 file changed

Lines changed: 115 additions & 32 deletions

File tree

components/home/Home.bs

Lines changed: 115 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -949,6 +949,90 @@ sub onMetaDataLoaded()
949949
m.loadItemsTask1.control = TaskControl.RUN
950950
end sub
951951

952+
sub clearTextNode(node as dynamic)
953+
if isValid(node)
954+
node.text = ""
955+
end if
956+
end sub
957+
958+
sub hideNode(node as dynamic)
959+
if isValid(node)
960+
node.visible = false
961+
end if
962+
end sub
963+
964+
sub resetFocusedItemDetails()
965+
clearTextNode(m.itemOverview)
966+
967+
hideNode(m.movieMetadataRow)
968+
hideNode(m.showMetadataRow)
969+
hideNode(m.episodeMetadataRow)
970+
971+
textNodes = [
972+
m.communityRating,
973+
m.criticRatingLabel,
974+
m.episodeNumber,
975+
m.releaseYear,
976+
m.showStatus,
977+
m.officialRating,
978+
m.runtime,
979+
m.showReleaseYear,
980+
m.showOfficialRating,
981+
m.showRuntime,
982+
m.showCommunityRating,
983+
m.episodeAirDate,
984+
m.episodeRuntime
985+
]
986+
987+
for each node in textNodes
988+
clearTextNode(node)
989+
hideNode(node)
990+
end for
991+
992+
hideNode(m.communityRatingGroup)
993+
hideNode(m.showCommunityRatingGroup)
994+
995+
if isValid(m.star)
996+
m.star.visible = false
997+
m.star.width = 0
998+
m.star.height = 0
999+
end if
1000+
1001+
if isValid(m.showStar)
1002+
m.showStar.visible = false
1003+
m.showStar.width = 0
1004+
m.showStar.height = 0
1005+
end if
1006+
1007+
hideNode(m.criticRatingGroup)
1008+
1009+
if isValid(m.criticRatingIcon)
1010+
m.criticRatingIcon.uri = ""
1011+
m.criticRatingIcon.visible = false
1012+
m.criticRatingIcon.width = 0
1013+
m.criticRatingIcon.height = 0
1014+
end if
1015+
1016+
clearPluginRatings()
1017+
end sub
1018+
1019+
sub clearFocusedItemBackdrop()
1020+
if isValid(m.backdropFadeIn) then m.backdropFadeIn.control = "stop"
1021+
if isValid(m.backdropPrevFadeOut) then m.backdropPrevFadeOut.control = "stop"
1022+
1023+
if isValid(m.backdrop)
1024+
m.backdrop.uri = ""
1025+
m.backdrop.opacity = m.backdropTargetOpacity
1026+
end if
1027+
1028+
if isValid(m.backdropPrev)
1029+
m.backdropPrev.uri = ""
1030+
m.backdropPrev.opacity = 0
1031+
end if
1032+
1033+
m.backdropCrossfading = false
1034+
end sub
1035+
9521036
sub onItemFocusChanged()
9531037
if not isValid(m.homeRows.content) then return
9541038
if m.homeRows.rowItemFocused[0] < 0 or m.homeRows.rowItemFocused[1] < 0 then return
@@ -960,6 +1044,8 @@ sub onItemFocusChanged()
9601044
m.itemTitle.text = focusedItem.title ?? ""
9611045
end if
9621046

1047+
resetFocusedItemDetails()
1048+
9631049
if isValid(m.backdrop) and isValidAndNotEmpty(focusedItem.backdropURL)
9641050
if isValid(m.backdropFadeIn) then m.backdropFadeIn.control = "stop"
9651051
if isValid(m.backdropPrevFadeOut) then m.backdropPrevFadeOut.control = "stop"
@@ -972,12 +1058,19 @@ sub onItemFocusChanged()
9721058
m.backdrop.opacity = 0.0
9731059
m.backdrop.uri = focusedItem.backdropURL
9741060
m.backdropCrossfading = true
1061+
else
1062+
clearFocusedItemBackdrop()
9751063
end if
9761064

1065+
m.currentFocusedItemId = ""
9771066
m.currentFocusedItemServerUrl = invalid
1067+
1068+
if isValidAndNotEmpty(focusedItem.id)
1069+
m.currentFocusedItemId = focusedItem.id
1070+
end if
1071+
9781072
if isChainValid(focusedItem, "json._serverUrl") and isValidAndNotEmpty(focusedItem.json._serverUrl)
9791073
m.currentFocusedItemServerUrl = focusedItem.json._serverUrl
980-
m.currentFocusedItemBackdropURL = focusedItem.backdropURL
9811074
end if
9821075

9831076
itemId = focusedItem.id
@@ -1008,6 +1101,27 @@ sub onItemDetailsLoaded()
10081101
json = item.json
10091102
if not isValid(json) then return
10101103

1104+
loadedItemId = ""
1105+
if isValidAndNotEmpty(item.id)
1106+
loadedItemId = item.id
1107+
else if isValidAndNotEmpty(chainLookupReturn(json, "Id", ""))
1108+
loadedItemId = json.Id
1109+
end if
1110+
1111+
if not isValidAndNotEmpty(m.currentFocusedItemId)
1112+
return
1113+
end if
1114+
1115+
if not isValidAndNotEmpty(loadedItemId)
1116+
return
1117+
end if
1118+
1119+
if LCase(m.currentFocusedItemId) <> LCase(loadedItemId)
1120+
return
1121+
end if
1122+
1123+
resetFocusedItemDetails()
1124+
10111125
isEpisode = isValid(json.Type) and json.Type = "Episode"
10121126

10131127
if isValid(m.backdrop) and not isValidAndNotEmpty(m.currentFocusedItemServerUrl)
@@ -1032,37 +1146,6 @@ sub onItemDetailsLoaded()
10321146
end if
10331147
end if
10341148

1035-
setFieldText("communityRating", "")
1036-
setFieldText("criticRatingLabel", "")
1037-
setFieldText("episodeNumber", "")
1038-
setFieldText("releaseYear", "")
1039-
setFieldText("showStatus", "")
1040-
setFieldText("officialRating", "")
1041-
setFieldText("runtime", "")
1042-
1043-
setFieldVisibility("communityRating", false)
1044-
setFieldVisibility("criticRatingLabel", false)
1045-
setFieldVisibility("episodeNumber", false)
1046-
setFieldVisibility("releaseYear", false)
1047-
setFieldVisibility("showStatus", false)
1048-
setFieldVisibility("officialRating", false)
1049-
setFieldVisibility("runtime", false)
1050-
setFieldVisibility("communityRatingGroup", false)
1051-
if isValid(m.star)
1052-
m.star.visible = false
1053-
m.star.width = 0
1054-
m.star.height = 0
1055-
end if
1056-
if isValid(m.criticRatingGroup) then m.criticRatingGroup.visible = false
1057-
if isValid(m.criticRatingIcon)
1058-
m.criticRatingIcon.uri = ""
1059-
m.criticRatingIcon.visible = false
1060-
m.criticRatingIcon.width = 0
1061-
m.criticRatingIcon.height = 0
1062-
end if
1063-
1064-
clearPluginRatings()
1065-
10661149
if isValid(json.Type)
10671150
if json.Type = "Episode"
10681151
populateEpisodeMetadata(json, item)

0 commit comments

Comments
 (0)