fix crash after clicking on the highlight play button
This commit is contained in:
		| @ -125,6 +125,14 @@ object AoDParser { | ||||
|         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 | ||||
|     fun sendCallback(callbackPath: String) = GlobalScope.launch(Dispatchers.IO) { | ||||
|         val headers = mutableMapOf( | ||||
|  | ||||
| @ -106,7 +106,10 @@ class PlayerViewModel(application: Application) : AndroidViewModel(application) | ||||
|         ) | ||||
|         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) { | ||||
|  | ||||
| @ -32,14 +32,6 @@ class MediaFragment(private val mediaId: Int) : Fragment() { | ||||
|     private lateinit var tmdb: TMDBResponse | ||||
|     private lateinit var nextEpisode: Episode | ||||
|  | ||||
|     companion object { | ||||
|         lateinit var instance: MediaFragment | ||||
|     } | ||||
|  | ||||
|     init { | ||||
|         instance = this | ||||
|     } | ||||
|  | ||||
|     override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { | ||||
|         binding = FragmentMediaBinding.inflate(inflater, container, false) | ||||
|         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 | ||||
|      */ | ||||
| @ -169,14 +174,4 @@ class MediaFragment(private val mediaId: Int) : Fragment() { | ||||
|         (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() | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
		Reference in New Issue
	
	Block a user