diff --git a/components/home/HomeItem.bs b/components/home/HomeItem.bs index ff84644d..882f6b5f 100644 --- a/components/home/HomeItem.bs +++ b/components/home/HomeItem.bs @@ -28,6 +28,7 @@ end sub sub itemContentChanged() + m.unplayedCount.visible = false itemData = m.top.itemContent if itemData = invalid then return diff --git a/components/home/HomeRows.bs b/components/home/HomeRows.bs index f5895e88..a611ebcf 100644 --- a/components/home/HomeRows.bs +++ b/components/home/HomeRows.bs @@ -1,5 +1,5 @@ import "pkg:/source/utils/misc.bs" -import "pkg:/components/ImageSizes.bs" +import "pkg:/source/constants/ImageSizes.bs" ' The maximum number of seconds we will show the loading spinner and delay the user from using the home view while the content loads ' We use this to wait for the rows to load so we can reset focus to the row/item once it loads @@ -21,7 +21,6 @@ sub init() m.loadingTimer = createObject("roSGNode", "Timer") m.loadingTimer.duration = MAX_TIME_HOME_LOADING_SPINNER_SHOWN - m.loadingTimer.repeat = true m.loadingTimer.observeField("fire", "stopLoadingSpinner") updateSize() @@ -308,6 +307,7 @@ end sub ' Update home row data sub updateHomeRows() startMediaLoadingSpinner() + m.loadingTimer.control = "start" content = processUserSections() setRowItemSizes() m.top.content = content @@ -454,6 +454,7 @@ sub updateLatestItems(msg) row = CreateObject("roSGNode", "HomeRow") row.title = tr("Latest in") + " " + node.metadata.title + " >" row.usePoster = true + ' Handle specific types with different item widths if node.metadata.contentType = "movies" row.imageWidth = imageSizes.MOVIE_POSTER[0] @@ -524,21 +525,19 @@ end sub ' setFocusToPreviousFocusedItem: Sets the cursor focus to the row and item previously selected ' sub setFocusToPreviousFocusedItem() - m.loadingTimer.control = "start" + if not isValidAndNotEmpty(m.selectedRowItem) then return - if isValid(m.selectedRowItem) - ' Set focus to row if it exists - itemRow = m.top.content.getChild(m.top.rowItemSelected[0]) - if isValid(itemRow) - m.top.jumpToItem = m.top.rowItemSelected[0] + ' Set focus to row if it exists + itemRow = m.top.content.getChild(m.selectedRowItem[0]) + if isValid(itemRow) + m.top.jumpToItem = m.selectedRowItem[0] - ' Set focus to column if it exists - itemColumn = itemRow.getChild(m.top.rowItemSelected[1]) - if isValid(itemColumn) - m.top.jumpToRowItem = [m.selectedRowItem[0], m.selectedRowItem[1]] - m.loadingTimer.control = "stop" - stopLoadingSpinner() - end if + ' Set focus to column if it exists + itemColumn = itemRow.getChild(m.selectedRowItem[1]) + if isValid(itemColumn) + m.top.jumpToRowItem = [m.selectedRowItem[0], m.selectedRowItem[1]] + m.loadingTimer.control = "stop" + stopLoadingSpinner() end if end if end sub diff --git a/locale/en_US/translations.ts b/locale/en_US/translations.ts index 54af561b..1fe47848 100644 --- a/locale/en_US/translations.ts +++ b/locale/en_US/translations.ts @@ -1232,13 +1232,13 @@ Message shown in OSD when no chapter data is returned by the API - Use Web's Home Section Arrangement - Use Web's Home Section Arrangement + Use Web Client's Home Section Arrangement + Use Web Client's Home Section Arrangement User Setting - Setting title - Make the arrangement of the Roku home view sections match the web's home screen. Jellyfin will need to be closed and reopened for change to take effect. - Make the arrangement of the Roku home view sections match the web's home screen. Jellyfin will need to be closed and reopened for change to take effect. + Make the arrangement of the Roku home view sections match the web client's home screen. Jellyfin will need to be closed and reopened for change to take effect. + Make the arrangement of the Roku home view sections match the web client's home screen. Jellyfin will need to be closed and reopened for change to take effect. User Setting - Setting description diff --git a/settings/settings.json b/settings/settings.json index bbe71386..9c33a6b0 100644 --- a/settings/settings.json +++ b/settings/settings.json @@ -233,11 +233,11 @@ "default": "false" }, { - "title": "Use Web's Home Section Arrangement", - "description": "Make the arrangement of the Roku home view sections match the web's home screen. Jellyfin will need to be closed and reopened for change to take effect.", + "title": "Use Web Client's Home Section Arrangement", + "description": "Make the arrangement of the Roku home view sections match the web client's home screen. Jellyfin will need to be closed and reopened for change to take effect.", "settingName": "ui.home.useWebSectionArrangement", "type": "bool", - "default": "false" + "default": "true" } ] }, diff --git a/components/ImageSizes.bs b/source/constants/ImageSizes.bs similarity index 54% rename from components/ImageSizes.bs rename to source/constants/ImageSizes.bs index 2371a30f..2e3df0b7 100644 --- a/components/ImageSizes.bs +++ b/source/constants/ImageSizes.bs @@ -1,5 +1,7 @@ +' @fileoverview Constants for various image sizes. + namespace imageSizes const WIDE_POSTER = [464, 331] - const MOVIE_POSTER = [188, 331] + const MOVIE_POSTER = [180, 331] const MUSIC_ALBUM = [261, 331] end namespace diff --git a/source/migrations.bs b/source/migrations.bs index 70cec93f..201ffc66 100644 --- a/source/migrations.bs +++ b/source/migrations.bs @@ -72,6 +72,14 @@ sub runRegistryUserMigrations() m.wasMigrated = true print `Running Registry Migration for ${CLIENT_VERSION_REQUIRING_BASE_MIGRATION} for userid: ${section}` + ' If this is an existing user, set the useWebSectionArrangement setting to false + ' This way the home view for upgrading users is not changed without them opting in + useWebSectionArrangement = registry_read("ui.home.useWebSectionArrangement", section) + + if not isValid(useWebSectionArrangement) + registry_write("ui.home.useWebSectionArrangement", "false", section) + end if + ' no longer saving password to registry registry_delete("password", section) ' av1 playback no longer hidden behind user setting diff --git a/source/utils/session.bs b/source/utils/session.bs index 14518d35..f6eee976 100644 --- a/source/utils/session.bs +++ b/source/utils/session.bs @@ -226,12 +226,6 @@ namespace session userPreferences = customPrefs rowTypes = [] - ' If this is a first time user, set the useWebSectionArrangement setting to true - ' This way the home view for upgrading users is not changed without them opting in - if not isValid(m.global.app.lastRunVersion) - set_user_setting("ui.home.useWebSectionArrangement", "true") - end if - useWebSectionArrangement = m.global.session.user.settings["ui.home.useWebSectionArrangement"] if isValid(useWebSectionArrangement)