diff --git a/app-tv/src/main/java/hu/bbara/purefin/ui/screen/episode/TvEpisodeScreen.kt b/app-tv/src/main/java/hu/bbara/purefin/ui/screen/episode/TvEpisodeScreen.kt index ff5e7009..c4888b60 100644 --- a/app-tv/src/main/java/hu/bbara/purefin/ui/screen/episode/TvEpisodeScreen.kt +++ b/app-tv/src/main/java/hu/bbara/purefin/ui/screen/episode/TvEpisodeScreen.kt @@ -13,21 +13,20 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel -import hu.bbara.purefin.ui.common.media.MediaCastRow -import hu.bbara.purefin.ui.screen.waiting.PurefinWaitingScreen +import hu.bbara.purefin.feature.content.episode.EpisodeScreenViewModel +import hu.bbara.purefin.image.ArtworkKind +import hu.bbara.purefin.image.ImageUrlBuilder +import hu.bbara.purefin.model.Episode +import hu.bbara.purefin.navigation.EpisodeDto +import hu.bbara.purefin.navigation.LocalNavigationManager +import hu.bbara.purefin.navigation.Route import hu.bbara.purefin.ui.common.media.MediaDetailOverviewSection import hu.bbara.purefin.ui.common.media.MediaDetailPlaybackSection import hu.bbara.purefin.ui.common.media.MediaDetailSectionTitle import hu.bbara.purefin.ui.common.media.TvMediaDetailBodyBox import hu.bbara.purefin.ui.common.media.TvMediaDetailScaffold import hu.bbara.purefin.ui.screen.episode.components.TvEpisodeHeroSection -import hu.bbara.purefin.image.ImageUrlBuilder -import hu.bbara.purefin.navigation.EpisodeDto -import hu.bbara.purefin.navigation.LocalNavigationManager -import hu.bbara.purefin.navigation.Route -import hu.bbara.purefin.model.Episode -import hu.bbara.purefin.feature.content.episode.EpisodeScreenViewModel -import hu.bbara.purefin.image.ArtworkKind +import hu.bbara.purefin.ui.screen.waiting.PurefinWaitingScreen @Composable fun TvEpisodeScreen( @@ -126,7 +125,7 @@ internal fun TvEpisodeScreenContent( Column(modifier = it.fillMaxWidth()) { MediaDetailSectionTitle(text = "Cast") Spacer(modifier = Modifier.height(14.dp)) - MediaCastRow(cast = episode.cast) +// MediaCastRow(cast = episode.cast) Spacer(modifier = Modifier.height(24.dp)) } } diff --git a/app-tv/src/main/java/hu/bbara/purefin/ui/screen/movie/TvMovieScreen.kt b/app-tv/src/main/java/hu/bbara/purefin/ui/screen/movie/TvMovieScreen.kt index 1913184c..e216f7be 100644 --- a/app-tv/src/main/java/hu/bbara/purefin/ui/screen/movie/TvMovieScreen.kt +++ b/app-tv/src/main/java/hu/bbara/purefin/ui/screen/movie/TvMovieScreen.kt @@ -13,8 +13,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel -import hu.bbara.purefin.ui.common.media.MediaCastRow -import hu.bbara.purefin.ui.screen.waiting.PurefinWaitingScreen +import hu.bbara.purefin.feature.content.movie.MovieScreenViewModel +import hu.bbara.purefin.model.Movie +import hu.bbara.purefin.navigation.MovieDto import hu.bbara.purefin.ui.common.media.MediaDetailOverviewSection import hu.bbara.purefin.ui.common.media.MediaDetailPlaybackSection import hu.bbara.purefin.ui.common.media.MediaDetailSectionTitle @@ -22,9 +23,7 @@ import hu.bbara.purefin.ui.common.media.TvMediaDetailBodyBox import hu.bbara.purefin.ui.common.media.TvMediaDetailScaffold import hu.bbara.purefin.ui.common.media.tvMediaDetailBackgroundImageUrl import hu.bbara.purefin.ui.screen.movie.components.TvMovieHeroSection -import hu.bbara.purefin.navigation.MovieDto -import hu.bbara.purefin.model.Movie -import hu.bbara.purefin.feature.content.movie.MovieScreenViewModel +import hu.bbara.purefin.ui.screen.waiting.PurefinWaitingScreen @Composable fun TvMovieScreen( @@ -91,8 +90,8 @@ internal fun TvMovieScreenContent( item(key = "movie-playback") { Column(modifier = it.fillMaxWidth()) { MediaDetailPlaybackSection( - audioTrack = movie.audioTrack, - subtitles = movie.subtitles, + audioTrack = "ENG", + subtitles = "ENG", modifier = Modifier.fillMaxWidth() ) Spacer(modifier = Modifier.height(20.dp)) @@ -103,7 +102,7 @@ internal fun TvMovieScreenContent( Column(modifier = it.fillMaxWidth()) { MediaDetailSectionTitle(text = "Cast") Spacer(modifier = Modifier.height(14.dp)) - MediaCastRow(cast = movie.cast) +// MediaCastRow(cast = movie.cast) Spacer(modifier = Modifier.height(24.dp)) } } diff --git a/app-tv/src/main/java/hu/bbara/purefin/ui/screen/player/components/TvPlayerQueuePanel.kt b/app-tv/src/main/java/hu/bbara/purefin/ui/screen/player/components/TvPlayerQueuePanel.kt index 94a88d5a..0fd03bfe 100644 --- a/app-tv/src/main/java/hu/bbara/purefin/ui/screen/player/components/TvPlayerQueuePanel.kt +++ b/app-tv/src/main/java/hu/bbara/purefin/ui/screen/player/components/TvPlayerQueuePanel.kt @@ -231,15 +231,6 @@ private fun TvQueueRowCard( maxLines = 2, overflow = TextOverflow.Ellipsis ) - item.subtitle?.takeIf { it.isNotBlank() }?.let { subtitle -> - Text( - text = subtitle, - color = scheme.onSurfaceVariant, - style = MaterialTheme.typography.bodySmall, - maxLines = 1, - overflow = TextOverflow.Ellipsis - ) - } } } } diff --git a/app-tv/src/main/java/hu/bbara/purefin/ui/screen/series/TvSeriesScreen.kt b/app-tv/src/main/java/hu/bbara/purefin/ui/screen/series/TvSeriesScreen.kt index cfaf9690..f67b5e8f 100644 --- a/app-tv/src/main/java/hu/bbara/purefin/ui/screen/series/TvSeriesScreen.kt +++ b/app-tv/src/main/java/hu/bbara/purefin/ui/screen/series/TvSeriesScreen.kt @@ -10,12 +10,16 @@ import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.runtime.withFrameNanos import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel -import hu.bbara.purefin.ui.screen.waiting.PurefinWaitingScreen +import hu.bbara.purefin.feature.content.series.SeriesViewModel +import hu.bbara.purefin.model.Season +import hu.bbara.purefin.model.Series +import hu.bbara.purefin.navigation.SeriesDto import hu.bbara.purefin.ui.common.media.MediaDetailOverviewSection import hu.bbara.purefin.ui.common.media.MediaDetailSectionTitle import hu.bbara.purefin.ui.common.media.TvMediaDetailBodyBox @@ -26,10 +30,7 @@ import hu.bbara.purefin.ui.screen.series.components.SeriesFirstSeasonTabTag import hu.bbara.purefin.ui.screen.series.components.TvEpisodeCarousel import hu.bbara.purefin.ui.screen.series.components.TvSeasonTabs import hu.bbara.purefin.ui.screen.series.components.TvSeriesHeroSection -import hu.bbara.purefin.navigation.SeriesDto -import hu.bbara.purefin.model.Season -import hu.bbara.purefin.model.Series -import hu.bbara.purefin.feature.content.series.SeriesViewModel +import hu.bbara.purefin.ui.screen.waiting.PurefinWaitingScreen import java.util.UUID @Composable diff --git a/app-tv/src/main/java/hu/bbara/purefin/ui/screen/series/components/TvSeriesComponents.kt b/app-tv/src/main/java/hu/bbara/purefin/ui/screen/series/components/TvSeriesComponents.kt index 4f3c8ed9..dd50e297 100644 --- a/app-tv/src/main/java/hu/bbara/purefin/ui/screen/series/components/TvSeriesComponents.kt +++ b/app-tv/src/main/java/hu/bbara/purefin/ui/screen/series/components/TvSeriesComponents.kt @@ -20,6 +20,7 @@ import androidx.compose.foundation.layout.sizeIn import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape @@ -50,21 +51,20 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.hilt.navigation.compose.hiltViewModel -import hu.bbara.purefin.ui.common.media.MediaCastRow -import hu.bbara.purefin.ui.common.bar.MediaProgressBar -import hu.bbara.purefin.ui.common.button.MediaResumeButton -import hu.bbara.purefin.ui.common.image.PurefinAsyncImage -import hu.bbara.purefin.ui.common.badge.WatchStateBadge -import hu.bbara.purefin.ui.common.media.MediaMetadataFlowRow -import hu.bbara.purefin.ui.common.media.mediaPlaybackProgress -import hu.bbara.purefin.ui.common.media.mediaPlayButtonText +import hu.bbara.purefin.feature.content.series.SeriesViewModel +import hu.bbara.purefin.image.ArtworkKind import hu.bbara.purefin.image.ImageUrlBuilder import hu.bbara.purefin.model.CastMember import hu.bbara.purefin.model.Episode import hu.bbara.purefin.model.Season import hu.bbara.purefin.model.Series -import hu.bbara.purefin.feature.content.series.SeriesViewModel -import hu.bbara.purefin.image.ArtworkKind +import hu.bbara.purefin.ui.common.badge.WatchStateBadge +import hu.bbara.purefin.ui.common.bar.MediaProgressBar +import hu.bbara.purefin.ui.common.button.MediaResumeButton +import hu.bbara.purefin.ui.common.image.PurefinAsyncImage +import hu.bbara.purefin.ui.common.media.MediaMetadataFlowRow +import hu.bbara.purefin.ui.common.media.mediaPlayButtonText +import hu.bbara.purefin.ui.common.media.mediaPlaybackProgress internal const val SeriesPlayButtonTag = "series-play-button" internal const val SeriesFirstSeasonTabTag = "series-first-season-tab" @@ -367,13 +367,13 @@ private fun TvEpisodeCard( @Composable internal fun CastRow(cast: List, modifier: Modifier = Modifier) { - MediaCastRow( - cast = cast, - modifier = modifier, - cardWidth = 84.dp, - nameSize = 11.sp, - roleSize = 10.sp - ) +// MediaCastRow( +// cast = cast, +// modifier = modifier, +// cardWidth = 84.dp, +// nameSize = 11.sp, +// roleSize = 10.sp +// ) } private fun Episode.heroStatusText(): String { diff --git a/core/src/main/java/hu/bbara/purefin/player/manager/PlayerManager.kt b/core/src/main/java/hu/bbara/purefin/player/manager/PlayerManager.kt index 99296969..12d8674d 100644 --- a/core/src/main/java/hu/bbara/purefin/player/manager/PlayerManager.kt +++ b/core/src/main/java/hu/bbara/purefin/player/manager/PlayerManager.kt @@ -157,7 +157,7 @@ class PlayerManager @Inject constructor( val nextUpPlayableMedias = playableMediaRepository.getNextUpPlayableMedias( episodeId = _currentMediaId.value ?: return, existingIds = _playlist.value.map { it.id }.toSet(), - count = 5 + count = 10 ) addToQueue(nextUpPlayableMedias) } diff --git a/core/src/main/java/hu/bbara/purefin/player/viewmodel/PlayerViewModel.kt b/core/src/main/java/hu/bbara/purefin/player/viewmodel/PlayerViewModel.kt index 37a1f36e..126e6248 100644 --- a/core/src/main/java/hu/bbara/purefin/player/viewmodel/PlayerViewModel.kt +++ b/core/src/main/java/hu/bbara/purefin/player/viewmodel/PlayerViewModel.kt @@ -1,5 +1,6 @@ package hu.bbara.purefin.player.viewmodel +import android.util.Log import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope @@ -126,7 +127,8 @@ class PlayerViewModel @Inject constructor( queue = episodes.mapNotNull { episode -> val episodeValue = episode.first() if (episodeValue == null) { - throw IllegalStateException("Episode not found for media id: $episodeValue") + Log.e("PlayerViewModel", "Episode not found for playlist: $playlist") + return@mapNotNull null } PlaylistElementUiModel( id = episodeValue.id.toString(),