mirror of
https://github.com/bbara04/Purefin.git
synced 2026-07-23 19:26:50 +00:00
feat: update media selection logic to handle offline state in view models and DTOs
This commit is contained in:
@@ -43,11 +43,7 @@ fun EpisodeScreen(
|
||||
val previousRoute = remember(backStack) { backStack.getOrNull(backStack.lastIndex - 1) }
|
||||
|
||||
LaunchedEffect(episode) {
|
||||
viewModel.selectEpisode(
|
||||
seriesId = episode.seriesId,
|
||||
seasonId = episode.seasonId,
|
||||
episodeId = episode.id
|
||||
)
|
||||
viewModel.selectEpisode(episode)
|
||||
}
|
||||
|
||||
val episode = viewModel.episode.collectAsState()
|
||||
|
||||
@@ -35,8 +35,8 @@ fun MovieScreen(
|
||||
viewModel: MovieScreenViewModel = hiltViewModel(),
|
||||
modifier: Modifier = Modifier
|
||||
) {
|
||||
LaunchedEffect(movie.id) {
|
||||
viewModel.selectMovie(movie.id)
|
||||
LaunchedEffect(movie) {
|
||||
viewModel.selectMovie(movie)
|
||||
}
|
||||
|
||||
val movieItem = viewModel.movie.collectAsState()
|
||||
|
||||
@@ -45,13 +45,13 @@ fun SeriesScreen(
|
||||
modifier: Modifier = Modifier,
|
||||
viewModel: SeriesViewModel = hiltViewModel()
|
||||
) {
|
||||
LaunchedEffect(series.id) {
|
||||
viewModel.selectSeries(series.id)
|
||||
LaunchedEffect(series) {
|
||||
viewModel.selectSeries(series)
|
||||
}
|
||||
|
||||
val series = viewModel.series.collectAsState()
|
||||
val seriesState = viewModel.series.collectAsState()
|
||||
|
||||
val seriesData = series.value
|
||||
val seriesData = seriesState.value
|
||||
if (seriesData != null && seriesData.seasons.isNotEmpty()) {
|
||||
LaunchedEffect(seriesData) {
|
||||
viewModel.observeSeriesDownloadState(seriesData)
|
||||
@@ -75,6 +75,7 @@ fun SeriesScreen(
|
||||
onLoadSeasonEpisodes = viewModel::loadSeasonEpisodes,
|
||||
onObserveSeasonDownloadState = viewModel::observeSeasonDownloadState,
|
||||
onBack = viewModel::onGoHome,
|
||||
offline = series.offline,
|
||||
modifier = modifier
|
||||
)
|
||||
} else {
|
||||
@@ -91,6 +92,7 @@ private fun SeriesScreenInternal(
|
||||
onLoadSeasonEpisodes: (UUID, UUID) -> Unit,
|
||||
onObserveSeasonDownloadState: (List<Episode>) -> Unit,
|
||||
onBack: () -> Unit,
|
||||
offline: Boolean,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
val scheme = MaterialTheme.colorScheme
|
||||
@@ -128,6 +130,7 @@ private fun SeriesScreenInternal(
|
||||
seriesDownloadState = seriesDownloadState,
|
||||
selectedSeason = selectedSeason,
|
||||
seasonDownloadState = seasonDownloadState,
|
||||
offline = offline,
|
||||
onDownloadOptionSelected = { option ->
|
||||
onDownloadOptionSelected(option, selectedSeason)
|
||||
}
|
||||
@@ -188,7 +191,8 @@ private fun SeriesScreenPreview() {
|
||||
onDownloadOptionSelected = { _, _ -> },
|
||||
onLoadSeasonEpisodes = { _, _ -> },
|
||||
onObserveSeasonDownloadState = {},
|
||||
onBack = {}
|
||||
onBack = {},
|
||||
offline = false,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,6 +112,7 @@ internal fun SeriesActionButtons(
|
||||
seriesDownloadState: DownloadState,
|
||||
selectedSeason: Season,
|
||||
seasonDownloadState: DownloadState,
|
||||
offline: Boolean,
|
||||
onDownloadOptionSelected: (SeriesDownloadOption) -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
@@ -119,8 +120,7 @@ internal fun SeriesActionButtons(
|
||||
val navigationManager = LocalNavigationManager.current
|
||||
val scheme = MaterialTheme.colorScheme
|
||||
var showDownloadDialog by remember { mutableStateOf(false) }
|
||||
val episodeId = nextUpEpisode?.id
|
||||
val playAction = remember(nextUpEpisode) {
|
||||
val playAction = remember(nextUpEpisode, offline) {
|
||||
nextUpEpisode?.let { episode ->
|
||||
{
|
||||
navigationManager.navigate(
|
||||
@@ -128,7 +128,8 @@ internal fun SeriesActionButtons(
|
||||
EpisodeDto(
|
||||
id = episode.id,
|
||||
seasonId = episode.seasonId,
|
||||
seriesId = episode.seriesId
|
||||
seriesId = episode.seriesId,
|
||||
offline = offline,
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user