Return to episode screen after playback

This commit is contained in:
Balogh Barnabás
2026-03-24 21:03:49 +01:00
parent 2e8c864522
commit 291738d178
4 changed files with 19 additions and 25 deletions

View File

@@ -107,7 +107,6 @@ internal fun EpisodeDetails(
episode: Episode, episode: Episode,
downloadState: DownloadState, downloadState: DownloadState,
onDownloadClick: () -> Unit, onDownloadClick: () -> Unit,
onPlaybackStarted: () -> Unit,
modifier: Modifier = Modifier modifier: Modifier = Modifier
) { ) {
val scheme = MaterialTheme.colorScheme val scheme = MaterialTheme.colorScheme
@@ -118,7 +117,6 @@ internal fun EpisodeDetails(
val intent = Intent(context, PlayerActivity::class.java) val intent = Intent(context, PlayerActivity::class.java)
intent.putExtra("MEDIA_ID", episode.id.toString()) intent.putExtra("MEDIA_ID", episode.id.toString())
context.startActivity(intent) context.startActivity(intent)
onPlaybackStarted()
} }
} }

View File

@@ -72,7 +72,6 @@ fun EpisodeScreen(
downloadState = downloadState.value, downloadState = downloadState.value,
onBack = viewModel::onBack, onBack = viewModel::onBack,
onSeriesClick = viewModel::onSeriesClick, onSeriesClick = viewModel::onSeriesClick,
onPlaybackStarted = viewModel::onPlaybackStarted,
onDownloadClick = onDownloadClick, onDownloadClick = onDownloadClick,
modifier = modifier modifier = modifier
) )
@@ -85,7 +84,6 @@ private fun EpisodeScreenInternal(
downloadState: DownloadState, downloadState: DownloadState,
onBack: () -> Unit, onBack: () -> Unit,
onSeriesClick: () -> Unit, onSeriesClick: () -> Unit,
onPlaybackStarted: () -> Unit,
onDownloadClick: () -> Unit, onDownloadClick: () -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
@@ -117,7 +115,6 @@ private fun EpisodeScreenInternal(
episode = episode, episode = episode,
downloadState = downloadState, downloadState = downloadState,
onDownloadClick = onDownloadClick, onDownloadClick = onDownloadClick,
onPlaybackStarted = onPlaybackStarted,
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.padding(horizontal = 16.dp) .padding(horizontal = 16.dp)

View File

@@ -63,15 +63,18 @@ import hu.bbara.purefin.common.ui.components.GhostIconButton
import hu.bbara.purefin.common.ui.components.MediaActionButton import hu.bbara.purefin.common.ui.components.MediaActionButton
import hu.bbara.purefin.common.ui.components.MediaProgressBar import hu.bbara.purefin.common.ui.components.MediaProgressBar
import hu.bbara.purefin.common.ui.components.MediaResumeButton import hu.bbara.purefin.common.ui.components.MediaResumeButton
import hu.bbara.purefin.player.PlayerActivity
import hu.bbara.purefin.common.ui.components.PurefinAsyncImage import hu.bbara.purefin.common.ui.components.PurefinAsyncImage
import hu.bbara.purefin.common.ui.components.WatchStateIndicator import hu.bbara.purefin.common.ui.components.WatchStateIndicator
import hu.bbara.purefin.feature.download.DownloadState import hu.bbara.purefin.core.data.navigation.EpisodeDto
import hu.bbara.purefin.core.data.navigation.LocalNavigationManager
import hu.bbara.purefin.core.data.navigation.Route
import hu.bbara.purefin.core.model.CastMember import hu.bbara.purefin.core.model.CastMember
import hu.bbara.purefin.core.model.Episode import hu.bbara.purefin.core.model.Episode
import hu.bbara.purefin.core.model.Season import hu.bbara.purefin.core.model.Season
import hu.bbara.purefin.core.model.Series import hu.bbara.purefin.core.model.Series
import hu.bbara.purefin.feature.download.DownloadState
import hu.bbara.purefin.feature.shared.content.series.SeriesViewModel import hu.bbara.purefin.feature.shared.content.series.SeriesViewModel
import hu.bbara.purefin.player.PlayerActivity
@Composable @Composable
internal fun SeriesTopBar( internal fun SeriesTopBar(
@@ -127,14 +130,24 @@ internal fun SeriesActionButtons(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
val context = LocalContext.current val context = LocalContext.current
val navigationManager = LocalNavigationManager.current
val scheme = MaterialTheme.colorScheme val scheme = MaterialTheme.colorScheme
var showDownloadDialog by remember { mutableStateOf(false) } var showDownloadDialog by remember { mutableStateOf(false) }
val episodeId = nextUpEpisode?.id val episodeId = nextUpEpisode?.id
val playAction = remember(episodeId) { val playAction = remember(nextUpEpisode) {
episodeId?.let { id -> nextUpEpisode?.let { episode ->
{ {
navigationManager.navigate(
Route.EpisodeRoute(
EpisodeDto(
id = episode.id,
seasonId = episode.seasonId,
seriesId = episode.seriesId
)
)
)
val intent = Intent(context, PlayerActivity::class.java) val intent = Intent(context, PlayerActivity::class.java)
intent.putExtra("MEDIA_ID", id.toString()) intent.putExtra("MEDIA_ID", episode.id.toString())
context.startActivity(intent) context.startActivity(intent)
} }
} }

View File

@@ -5,8 +5,6 @@ import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.lifecycle.HiltViewModel
import hu.bbara.purefin.core.data.AppContentRepository import hu.bbara.purefin.core.data.AppContentRepository
import hu.bbara.purefin.core.data.navigation.NavigationManager import hu.bbara.purefin.core.data.navigation.NavigationManager
import hu.bbara.purefin.core.data.navigation.Route
import hu.bbara.purefin.core.data.navigation.SeriesDto
import hu.bbara.purefin.core.model.Episode import hu.bbara.purefin.core.model.Episode
import hu.bbara.purefin.feature.download.DownloadState import hu.bbara.purefin.feature.download.DownloadState
import hu.bbara.purefin.feature.download.MediaDownloadManager import hu.bbara.purefin.feature.download.MediaDownloadManager
@@ -51,20 +49,8 @@ class EpisodeScreenViewModel @Inject constructor(
navigationManager.pop() navigationManager.pop()
} }
fun onPlay() {
val id = _episodeId.value?.toString() ?: return
navigationManager.navigate(Route.PlayerRoute(mediaId = id))
}
fun onPlaybackStarted() {
val seriesId = _seriesId.value ?: return
navigationManager.pop()
navigationManager.navigate(Route.SeriesRoute(SeriesDto(id = seriesId)))
}
fun onSeriesClick() { fun onSeriesClick() {
val seriesId = _seriesId.value ?: return navigationManager.pop()
navigationManager.navigate(Route.SeriesRoute(SeriesDto(id = seriesId)))
} }
fun selectEpisode(seriesId: UUID, seasonId: UUID, episodeId: UUID) { fun selectEpisode(seriesId: UUID, seasonId: UUID, episodeId: UUID) {