From d762b9e018ea3e1cf4bdf398d375cb91d005d7b0 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Fri, 20 May 2022 17:45:16 +0200 Subject: [PATCH] lazyload comments --- .../com/github/libretube/PlayerFragment.kt | 38 +++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/github/libretube/PlayerFragment.kt b/app/src/main/java/com/github/libretube/PlayerFragment.kt index 3ddfe4fff..5494020fa 100644 --- a/app/src/main/java/com/github/libretube/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/PlayerFragment.kt @@ -83,6 +83,7 @@ class PlayerFragment : Fragment() { private lateinit var relatedRecView: RecyclerView private lateinit var commentsRecView: RecyclerView private var commentsAdapter: CommentsAdapter? = null + private var commentsLoaded: Boolean? = false private var nextPage: String? = null private var isLoading = true private lateinit var exoPlayerView: StyledPlayerView @@ -210,6 +211,7 @@ class PlayerFragment : Fragment() { view.findViewById(R.id.comments_toggle).setOnClickListener { commentsRecView.visibility = if (commentsRecView.isVisible) View.GONE else View.VISIBLE relatedRecView.visibility = if (relatedRecView.isVisible) View.GONE else View.VISIBLE + if (!commentsLoaded!!) fetchComments() } // FullScreen button trigger @@ -308,18 +310,6 @@ class PlayerFragment : Fragment() { Toast.makeText(context, R.string.server_error, Toast.LENGTH_SHORT).show() return@launchWhenCreated } - val commentsResponse = try { - RetrofitInstance.api.getComments(videoId!!) - } catch (e: IOException) { - println(e) - Log.e(TAG, "IOException, you might not have internet connection") - Toast.makeText(context, R.string.unknown_error, Toast.LENGTH_SHORT).show() - return@launchWhenCreated - } catch (e: HttpException) { - Log.e(TAG, "HttpException, unexpected response") - Toast.makeText(context, R.string.server_error, Toast.LENGTH_SHORT).show() - return@launchWhenCreated - } if (SponsorBlockSettings.sponsorBlockEnabled) { val categories: ArrayList = arrayListOf() if (SponsorBlockSettings.introEnabled) { @@ -603,9 +593,6 @@ class PlayerFragment : Fragment() { } } }) - commentsAdapter = CommentsAdapter(commentsResponse.comments) - commentsRecView.adapter = commentsAdapter - nextPage = commentsResponse.nextpage relatedRecView.adapter = TrendingAdapter(response.relatedStreams!!) view.findViewById(R.id.player_description).text = @@ -867,6 +854,27 @@ class PlayerFragment : Fragment() { super.onResume() } + private fun fetchComments() { + lifecycleScope.launchWhenCreated { + val commentsResponse = try { + RetrofitInstance.api.getComments(videoId!!) + } catch (e: IOException) { + println(e) + Log.e(TAG, "IOException, you might not have internet connection") + Toast.makeText(context, R.string.unknown_error, Toast.LENGTH_SHORT).show() + return@launchWhenCreated + } catch (e: HttpException) { + Log.e(TAG, "HttpException, unexpected response") + Toast.makeText(context, R.string.server_error, Toast.LENGTH_SHORT).show() + return@launchWhenCreated + } + commentsAdapter = CommentsAdapter(commentsResponse.comments) + commentsRecView.adapter = commentsAdapter + nextPage = commentsResponse.nextpage + commentsLoaded = true + } + } + private fun fetchNextComments() { lifecycleScope.launchWhenCreated { if (!isLoading) {