mirror of
https://github.com/bbara04/Purefin.git
synced 2026-07-23 19:26:50 +00:00
feat(series): surface uncategorized episodes as synthetic season
Episodes missing season/identity fields from Jellyfin previously crashed the converter due to non-null assertions. Introduce an Uncategorized sentinel season appended to a series via Series.allSeasons so these episodes are selectable in the season tabs on both phone and TV. - Add UNCATEGORIZED_SEASON_ID/SERIES_ID/LABEL constants in core-model - Make BaseItemDtoConverter null-safe and partition uncategorized episodes - InMemoryLocalMediaRepository collects uncategorized episodes per series - OfflineRoomMediaLocalDataSource persists and reconstructs the sentinel - SeriesScreen and TvSeriesScreen use allSeasons for tab rendering
This commit is contained in:
@@ -149,12 +149,12 @@ private fun SeriesScreenInternal(
|
||||
var showMarkAsWatchedDialog by remember { mutableStateOf(false) }
|
||||
|
||||
fun getDefaultSeason(): Season? {
|
||||
return series.seasons.firstOrNull { it.unwatchedEpisodeCount > 0 } ?: series.seasons.firstOrNull()
|
||||
return series.allSeasons.firstOrNull { it.unwatchedEpisodeCount > 0 } ?: series.allSeasons.firstOrNull()
|
||||
}
|
||||
|
||||
var selectedSeasonId by remember(series.id) { mutableStateOf(getDefaultSeason()?.id) }
|
||||
val selectedSeason =
|
||||
series.seasons.firstOrNull { it.id == selectedSeasonId } ?: getDefaultSeason()
|
||||
series.allSeasons.firstOrNull { it.id == selectedSeasonId } ?: getDefaultSeason()
|
||||
val nextUpEpisode = selectedSeason?.episodes?.firstOrNull { !it.watched }
|
||||
?: selectedSeason?.episodes?.firstOrNull()
|
||||
val playAction = remember(nextUpEpisode, offline) {
|
||||
@@ -210,7 +210,7 @@ private fun SeriesScreenInternal(
|
||||
) { _modifier ->
|
||||
if (selectedSeason != null) {
|
||||
SeasonTabs(
|
||||
seasons = series.seasons,
|
||||
seasons = series.allSeasons,
|
||||
selectedSeason = selectedSeason,
|
||||
onSelect = { selectedSeasonId = it.id },
|
||||
modifier = _modifier
|
||||
|
||||
Reference in New Issue
Block a user