From 8db4da54730ff3676f536abe75d2ec5022003ff3 Mon Sep 17 00:00:00 2001
From: Benoit Marty <benoit@matrix.org>
Date: Wed, 16 Dec 2020 11:45:06 +0100
Subject: [PATCH] Fix crash

---
 .../app/core/ui/views/PasswordStrengthBar.kt  |  4 +---
 .../reactions/EmojiReactionPickerActivity.kt  | 22 ++++++++-----------
 .../reactions/widget/ReactionButton.kt        | 13 +++++------
 .../src/main/res/layout/reaction_button.xml   |  9 ++++----
 4 files changed, 20 insertions(+), 28 deletions(-)

diff --git a/vector/src/main/java/im/vector/app/core/ui/views/PasswordStrengthBar.kt b/vector/src/main/java/im/vector/app/core/ui/views/PasswordStrengthBar.kt
index 4cb190acbf..2f6c4b45cf 100644
--- a/vector/src/main/java/im/vector/app/core/ui/views/PasswordStrengthBar.kt
+++ b/vector/src/main/java/im/vector/app/core/ui/views/PasswordStrengthBar.kt
@@ -17,7 +17,6 @@ package im.vector.app.core.ui.views
 
 import android.content.Context
 import android.util.AttributeSet
-import android.view.LayoutInflater
 import android.widget.LinearLayout
 import androidx.annotation.IntRange
 import androidx.core.content.ContextCompat
@@ -87,8 +86,7 @@ class PasswordStrengthBar @JvmOverloads constructor(
         }
 
     init {
-        LayoutInflater.from(context)
-                .inflate(R.layout.view_password_strength_bar, this, true)
+        inflate(context, R.layout.view_password_strength_bar, this)
         views = ViewPasswordStrengthBarBinding.bind(this)
         orientation = HORIZONTAL
         strength = 0
diff --git a/vector/src/main/java/im/vector/app/features/reactions/EmojiReactionPickerActivity.kt b/vector/src/main/java/im/vector/app/features/reactions/EmojiReactionPickerActivity.kt
index 1efef67d07..f9c66baa37 100644
--- a/vector/src/main/java/im/vector/app/features/reactions/EmojiReactionPickerActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/reactions/EmojiReactionPickerActivity.kt
@@ -51,8 +51,6 @@ import javax.inject.Inject
 class EmojiReactionPickerActivity : VectorBaseActivity<ActivityEmojiReactionPickerBinding>(),
         EmojiCompatFontProvider.FontProviderListener {
 
-    private lateinit var tabLayout: TabLayout
-
     lateinit var viewModel: EmojiChooserViewModel
 
     override fun getMenuRes() = R.menu.menu_emoji_reaction_picker
@@ -90,30 +88,28 @@ class EmojiReactionPickerActivity : VectorBaseActivity<ActivityEmojiReactionPick
             it.addListener(this)
         }
 
-        tabLayout = findViewById(R.id.tabs)
-
         viewModel = viewModelProvider.get(EmojiChooserViewModel::class.java)
 
         viewModel.eventId = intent.getStringExtra(EXTRA_EVENT_ID)
 
         emojiDataSource.rawData.categories.forEach { category ->
             val s = category.emojis[0]
-            tabLayout.newTab()
+            views.tabs.newTab()
                     .also { tab ->
                         tab.text = emojiDataSource.rawData.emojis[s]!!.emoji
                         tab.contentDescription = category.name
                     }
                     .also { tab ->
-                        tabLayout.addTab(tab)
+                        views.tabs.addTab(tab)
                     }
         }
-        tabLayout.addOnTabSelectedListener(tabLayoutSelectionListener)
+        views.tabs.addOnTabSelectedListener(tabLayoutSelectionListener)
 
         viewModel.currentSection.observe(this, Observer { section ->
             section?.let {
-                tabLayout.removeOnTabSelectedListener(tabLayoutSelectionListener)
-                tabLayout.getTabAt(it)?.select()
-                tabLayout.addOnTabSelectedListener(tabLayoutSelectionListener)
+                views.tabs.removeOnTabSelectedListener(tabLayoutSelectionListener)
+                views.tabs.getTabAt(it)?.select()
+                views.tabs.addOnTabSelectedListener(tabLayoutSelectionListener)
             }
         })
 
@@ -130,7 +126,7 @@ class EmojiReactionPickerActivity : VectorBaseActivity<ActivityEmojiReactionPick
 
         views.emojiPickerWholeListFragmentContainer.isVisible = true
         views.emojiPickerFilteredListFragmentContainer.isVisible = false
-        tabLayout.isVisible = true
+        views.tabs.isVisible = true
     }
 
     override fun compatibilityFontUpdate(typeface: Typeface?) {
@@ -191,11 +187,11 @@ class EmojiReactionPickerActivity : VectorBaseActivity<ActivityEmojiReactionPick
 
     private fun onQueryText(query: String) {
         if (query.isEmpty()) {
-            tabLayout.isVisible = true
+            views.tabs.isVisible = true
             views.emojiPickerWholeListFragmentContainer.isVisible = true
             views.emojiPickerFilteredListFragmentContainer.isVisible = false
         } else {
-            tabLayout.isVisible = false
+            views.tabs.isVisible = false
             views.emojiPickerWholeListFragmentContainer.isVisible = false
             views.emojiPickerFilteredListFragmentContainer.isVisible = true
             searchResultViewModel.handle(EmojiSearchAction.UpdateQuery(query))
diff --git a/vector/src/main/java/im/vector/app/features/reactions/widget/ReactionButton.kt b/vector/src/main/java/im/vector/app/features/reactions/widget/ReactionButton.kt
index 4fcca153cb..41258ba49b 100644
--- a/vector/src/main/java/im/vector/app/features/reactions/widget/ReactionButton.kt
+++ b/vector/src/main/java/im/vector/app/features/reactions/widget/ReactionButton.kt
@@ -23,15 +23,14 @@ import android.content.Context
 import android.content.res.TypedArray
 import android.graphics.drawable.Drawable
 import android.util.AttributeSet
-import android.view.LayoutInflater
 import android.view.View
 import android.view.animation.AccelerateDecelerateInterpolator
 import android.view.animation.DecelerateInterpolator
 import android.view.animation.OvershootInterpolator
-import android.widget.FrameLayout
 import android.widget.ImageView
 import androidx.annotation.ColorInt
 import androidx.annotation.ColorRes
+import androidx.constraintlayout.widget.ConstraintLayout
 import androidx.core.content.ContextCompat
 import androidx.core.content.withStyledAttributes
 import im.vector.app.EmojiCompatWrapper
@@ -48,7 +47,7 @@ import javax.inject.Inject
 class ReactionButton @JvmOverloads constructor(context: Context,
                                                attrs: AttributeSet? = null,
                                                defStyleAttr: Int = 0)
-    : FrameLayout(context, attrs, defStyleAttr), View.OnClickListener, View.OnLongClickListener {
+    : ConstraintLayout(context, attrs, defStyleAttr), View.OnClickListener, View.OnLongClickListener {
 
     init {
         if (context is HasScreenInjector) {
@@ -96,7 +95,7 @@ class ReactionButton @JvmOverloads constructor(context: Context,
     private var offDrawable: Drawable? = null
 
     init {
-        LayoutInflater.from(getContext()).inflate(R.layout.reaction_button, this, true)
+        inflate(context, R.layout.reaction_button, this)
         views = ReactionButtonBinding.bind(this)
         views.reactionCount.text = TextUtils.formatCountToShortDecimal(reactionCount)
 
@@ -158,7 +157,7 @@ class ReactionButton @JvmOverloads constructor(context: Context,
         isChecked = !isChecked
 
         // icon!!.setImageDrawable(if (isChecked) likeDrawable else unLikeDrawable)
-        views.reactionSelector.background = if (isChecked) onDrawable else offDrawable
+        background = if (isChecked) onDrawable else offDrawable
 
         if (isChecked) {
             reactedListener?.onReacted(this)
@@ -320,10 +319,10 @@ class ReactionButton @JvmOverloads constructor(context: Context,
     fun setChecked(status: Boolean?) {
         if (status!!) {
             isChecked = true
-            views.reactionSelector.background = onDrawable
+            background = onDrawable
         } else {
             isChecked = false
-            views.reactionSelector.background = offDrawable
+            background = offDrawable
         }
     }
 
diff --git a/vector/src/main/res/layout/reaction_button.xml b/vector/src/main/res/layout/reaction_button.xml
index d216b6db7b..66c3fa4cae 100644
--- a/vector/src/main/res/layout/reaction_button.xml
+++ b/vector/src/main/res/layout/reaction_button.xml
@@ -1,14 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<merge xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/reactionSelector"
     android:layout_width="wrap_content"
     android:layout_height="26dp"
     android:background="@drawable/reaction_rounded_rect_shape"
     android:clipChildren="false"
-    android:minWidth="44dp">
-
+    android:minWidth="44dp"
+    tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
 
     <!--<View-->
     <!--android:id="@+id/reactionSelector"-->
@@ -74,4 +73,4 @@
         app:layout_constraintStart_toEndOf="@id/reactionText"
         tools:text="13450" />
 
-</androidx.constraintlayout.widget.ConstraintLayout>
+</merge>