fix crash after clicking on the highlight play button
This commit is contained in:
parent
75ecac6144
commit
e4ac01605f
|
@ -125,6 +125,14 @@ object AoDParser {
|
||||||
return media
|
return media
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun markAsWatched(mediaId: Int, episodeId: Int) = GlobalScope.launch {
|
||||||
|
val episode = getMediaById(mediaId).getEpisodeById(episodeId)
|
||||||
|
episode.watched = true
|
||||||
|
sendCallback(episode.watchedCallback)
|
||||||
|
|
||||||
|
Log.d(javaClass.name, "Marked episode ${episode.id} as watched")
|
||||||
|
}
|
||||||
|
|
||||||
// TODO don't use jsoup here
|
// TODO don't use jsoup here
|
||||||
fun sendCallback(callbackPath: String) = GlobalScope.launch(Dispatchers.IO) {
|
fun sendCallback(callbackPath: String) = GlobalScope.launch(Dispatchers.IO) {
|
||||||
val headers = mutableMapOf(
|
val headers = mutableMapOf(
|
||||||
|
|
|
@ -106,7 +106,10 @@ class PlayerViewModel(application: Application) : AndroidViewModel(application)
|
||||||
)
|
)
|
||||||
playMedia(mediaSource, replace, seekPosition)
|
playMedia(mediaSource, replace, seekPosition)
|
||||||
|
|
||||||
MediaFragment.instance.updateWatchedState(currentEpisode) // watchedCallback for the new episode
|
// if episodes has not been watched, mark as watched
|
||||||
|
if (!episode.watched) {
|
||||||
|
AoDParser.markAsWatched(media.id, episode.id)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun playMedia(source: MediaSource, replace: Boolean = false, seekPosition: Long = 0) {
|
fun playMedia(source: MediaSource, replace: Boolean = false, seekPosition: Long = 0) {
|
||||||
|
|
|
@ -32,14 +32,6 @@ class MediaFragment(private val mediaId: Int) : Fragment() {
|
||||||
private lateinit var tmdb: TMDBResponse
|
private lateinit var tmdb: TMDBResponse
|
||||||
private lateinit var nextEpisode: Episode
|
private lateinit var nextEpisode: Episode
|
||||||
|
|
||||||
companion object {
|
|
||||||
lateinit var instance: MediaFragment
|
|
||||||
}
|
|
||||||
|
|
||||||
init {
|
|
||||||
instance = this
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
||||||
binding = FragmentMediaBinding.inflate(inflater, container, false)
|
binding = FragmentMediaBinding.inflate(inflater, container, false)
|
||||||
return binding.root
|
return binding.root
|
||||||
|
@ -61,6 +53,19 @@ class MediaFragment(private val mediaId: Int) : Fragment() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onResume() {
|
||||||
|
super.onResume()
|
||||||
|
|
||||||
|
// only notify adapter, if initialized
|
||||||
|
if (this::adapterRecEpisodes.isInitialized) {
|
||||||
|
// TODO find a better solution for this
|
||||||
|
media.episodes.forEachIndexed() { index, episode ->
|
||||||
|
adapterRecEpisodes.updateWatchedState(episode.watched, index)
|
||||||
|
}
|
||||||
|
adapterRecEpisodes.notifyDataSetChanged()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* if tmdb data is present, use it, else use the aod data
|
* if tmdb data is present, use it, else use the aod data
|
||||||
*/
|
*/
|
||||||
|
@ -169,14 +174,4 @@ class MediaFragment(private val mediaId: Int) : Fragment() {
|
||||||
(activity as MainActivity).startPlayer(media.id, ep.id)
|
(activity as MainActivity).startPlayer(media.id, ep.id)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateWatchedState(ep: Episode) {
|
|
||||||
AoDParser.sendCallback(ep.watchedCallback)
|
|
||||||
|
|
||||||
// only notify adapter, if initialized
|
|
||||||
if (this::adapterRecEpisodes.isInitialized) {
|
|
||||||
adapterRecEpisodes.updateWatchedState(true, media.episodes.indexOf(ep))
|
|
||||||
adapterRecEpisodes.notifyDataSetChanged()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue