From ee4581f2e3bfbd659c3f425d63040bda49f56851 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Sat, 26 Nov 2022 18:25:07 +0100 Subject: [PATCH] fix crash when clicking channel --- .../libretube/ui/adapters/CommentsAdapter.kt | 21 ++++++++++++------- .../github/libretube/util/NavigationHelper.kt | 13 ++++++++++-- app/src/main/res/layout/comments_row.xml | 4 ++-- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/adapters/CommentsAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/CommentsAdapter.kt index 330f6e543..39e202102 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/CommentsAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/CommentsAdapter.kt @@ -58,8 +58,10 @@ class CommentsAdapter( val comment = comments[position] holder.binding.apply { if (isRepliesAdapter) { - root.scaleX = 0.9f - root.scaleY = 0.9f + root.scaleX = REPLIES_ADAPTER_SCALE + root.scaleY = REPLIES_ADAPTER_SCALE + commentorImage.scaleX = REPLIES_ADAPTER_SCALE + commentorImage.scaleY = REPLIES_ADAPTER_SCALE } commentInfos.text = comment.author.toString() + TextUtils.SEPARATOR + comment.commentedTime.toString() @@ -81,8 +83,7 @@ class CommentsAdapter( } repliesRecView.layoutManager = LinearLayoutManager(root.context) - lateinit var repliesAdapter: CommentsAdapter - repliesAdapter = CommentsAdapter( + val repliesAdapter = CommentsAdapter( videoId, mutableListOf(), true @@ -103,8 +104,8 @@ class CommentsAdapter( } private fun showMoreReplies(nextPage: String, showMoreBtn: Button, repliesAdapter: CommentsAdapter) { - when { - repliesAdapter.itemCount.equals(0) -> { + when (repliesAdapter.itemCount) { + 0 -> { fetchReplies(nextPage) { repliesAdapter.updateItems(it.comments) if (repliesPage.nextpage == null) { @@ -112,9 +113,9 @@ class CommentsAdapter( return@fetchReplies } showMoreBtn.visibility = View.VISIBLE - showMoreBtn.setOnClickListener { + showMoreBtn.setOnClickListener { view -> if (repliesPage.nextpage == null) { - it.visibility = View.GONE + view.visibility = View.GONE return@setOnClickListener } fetchReplies( @@ -152,4 +153,8 @@ class CommentsAdapter( isLoading = false } } + + companion object { + private const val REPLIES_ADAPTER_SCALE = 0.9f + } } diff --git a/app/src/main/java/com/github/libretube/util/NavigationHelper.kt b/app/src/main/java/com/github/libretube/util/NavigationHelper.kt index 0131b8b90..c198279d8 100644 --- a/app/src/main/java/com/github/libretube/util/NavigationHelper.kt +++ b/app/src/main/java/com/github/libretube/util/NavigationHelper.kt @@ -2,6 +2,7 @@ package com.github.libretube.util import android.app.NotificationManager import android.content.Context +import android.content.ContextWrapper import android.content.Intent import android.content.pm.PackageManager import android.os.Bundle @@ -22,7 +23,7 @@ object NavigationHelper { ) { if (channelId == null) return - val activity = context as MainActivity + val activity = unwrap(context) val bundle = bundleOf(IntentData.channelId to channelId) activity.navController.navigate(R.id.channelFragment, bundle) try { @@ -36,6 +37,14 @@ object NavigationHelper { } } + private fun unwrap(context: Context): MainActivity { + var correctContext: Context? = context + while (correctContext !is MainActivity && correctContext is ContextWrapper) { + correctContext = correctContext.baseContext + } + return correctContext as MainActivity + } + fun navigateVideo( context: Context, videoId: String?, @@ -64,7 +73,7 @@ object NavigationHelper { ) { if (playlistId == null) return - val activity = context as MainActivity + val activity = unwrap(context) val bundle = Bundle() bundle.putString(IntentData.playlistId, playlistId) bundle.putSerializable(IntentData.playlistType, playlistType) diff --git a/app/src/main/res/layout/comments_row.xml b/app/src/main/res/layout/comments_row.xml index 15148e8a5..d83070b09 100644 --- a/app/src/main/res/layout/comments_row.xml +++ b/app/src/main/res/layout/comments_row.xml @@ -12,8 +12,8 @@ android:layout_marginTop="10dp" android:animateLayoutChanges="true" android:orientation="vertical" - android:paddingStart="20dp" - android:paddingEnd="20dp" + android:paddingStart="15dp" + android:paddingEnd="15dp" app:layout_constraintTop_toTopOf="parent">