diff --git a/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/MediaFragment.kt b/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/MediaFragment.kt index 0211d6d..c62435b 100644 --- a/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/MediaFragment.kt +++ b/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/MediaFragment.kt @@ -89,6 +89,7 @@ class MediaFragment(private val mediaIdStr: String) : Fragment() { binding.textTitle.text = model.upNextSeries.panel.title } + // needs to be called after model.updateOnResume() if (fragments.elementAtOrNull(0) is MediaFragmentEpisodes) { (fragments[0] as MediaFragmentEpisodes).updateWatchedState() } diff --git a/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/MediaFragmentEpisodes.kt b/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/MediaFragmentEpisodes.kt index b18914a..4ca840e 100644 --- a/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/MediaFragmentEpisodes.kt +++ b/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/MediaFragmentEpisodes.kt @@ -54,23 +54,10 @@ class MediaFragmentEpisodes : Fragment() { } } - override fun onResume() { - super.onResume() - - // if adapterRecEpisodes is initialized, update the watched state for the episodes - if (this::adapterRecEpisodes.isInitialized) { - // TODO reimplement, if needed - // update via playheads? -// model.media.playlist.forEachIndexed { index, episodeInfo -> -// adapterRecEpisodes.updateWatchedState(episodeInfo.watched, index) -// } -// adapterRecEpisodes.notifyDataSetChanged() - } - } - + @SuppressLint("NotifyDataSetChanged") fun updateWatchedState() { - // TODO update watched state of all episodes - // use a mutable list for playheads and notify dataset changed + // model.currentPlayheads is a val mutable map -> notify dataset changed + adapterRecEpisodes.notifyDataSetChanged() } private fun showSeasonSelection(v: View) { diff --git a/app/src/main/java/org/mosad/teapod/ui/activity/main/viewmodel/MediaFragmentViewModel.kt b/app/src/main/java/org/mosad/teapod/ui/activity/main/viewmodel/MediaFragmentViewModel.kt index 56d8514..4c0d265 100644 --- a/app/src/main/java/org/mosad/teapod/ui/activity/main/viewmodel/MediaFragmentViewModel.kt +++ b/app/src/main/java/org/mosad/teapod/ui/activity/main/viewmodel/MediaFragmentViewModel.kt @@ -3,7 +3,6 @@ package org.mosad.teapod.ui.activity.main.viewmodel import android.app.Application import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.viewModelScope -import kotlinx.coroutines.Job import kotlinx.coroutines.joinAll import kotlinx.coroutines.launch import org.mosad.teapod.parser.crunchyroll.* @@ -31,7 +30,7 @@ class MediaFragmentViewModel(application: Application) : AndroidViewModel(applic val currentEpisodesCrunchy = arrayListOf() // used for EpisodeItemAdapter (easier updates) // additional media info - var currentPlayheads: PlayheadsMap = emptyMap() + val currentPlayheads: MutableMap = mutableMapOf() var isWatchlist = false internal set var upNextSeries = NoneUpNextSeriesItem @@ -85,7 +84,8 @@ class MediaFragmentViewModel(application: Application) : AndroidViewModel(applic viewModelScope.launch { // get playheads (including fully watched state) val episodeIDs = episodesCrunchy.items.map { it.id } - currentPlayheads = Crunchyroll.playheads(episodeIDs) + currentPlayheads.clear() + currentPlayheads.putAll(Crunchyroll.playheads(episodeIDs)) }, viewModelScope.launch { loadTmdbInfo() } // use tmdb search to get media info ).joinAll() @@ -152,13 +152,14 @@ class MediaFragmentViewModel(application: Application) : AndroidViewModel(applic } suspend fun updateOnResume() { - listOf( + joinAll( viewModelScope.launch { val episodeIDs = episodesCrunchy.items.map { it.id } - currentPlayheads = Crunchyroll.playheads(episodeIDs) + currentPlayheads.clear() + currentPlayheads.putAll(Crunchyroll.playheads(episodeIDs)) }, viewModelScope.launch { upNextSeries = Crunchyroll.upNextSeries(seriesCrunchy.id) } - ).joinAll() + ) } /**