From 4283b2d8129edfc34d6d5d8db9536fae090389cc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Fri, 22 Mar 2024 15:18:06 -0400
Subject: [PATCH] conversation: improve loading experience

Change-Id: Ia1bdd216e3837e690b12fcae44e841fa585c18dc
---
 .../src/main/java/cx/ring/client/HomeActivity.kt   | 14 ++++++--------
 .../java/cx/ring/fragments/ConversationFragment.kt |  7 +++++++
 .../app/src/main/res/layout/frag_conversation.xml  |  5 +++--
 .../app/src/main/res/layout/item_smartlist.xml     |  1 +
 4 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/jami-android/app/src/main/java/cx/ring/client/HomeActivity.kt b/jami-android/app/src/main/java/cx/ring/client/HomeActivity.kt
index 9d718a86b..4451e309f 100644
--- a/jami-android/app/src/main/java/cx/ring/client/HomeActivity.kt
+++ b/jami-android/app/src/main/java/cx/ring/client/HomeActivity.kt
@@ -37,6 +37,7 @@ import androidx.core.view.doOnNextLayout
 import androidx.core.view.isVisible
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentTransaction
+import androidx.fragment.app.commit
 import androidx.lifecycle.ViewModelProvider
 import com.google.android.material.dialog.MaterialAlertDialogBuilder
 import cx.ring.R
@@ -428,13 +429,10 @@ class HomeActivity : AppCompatActivity(), ContactPickerFragment.OnContactedPicke
 
     fun showWelcomeFragment() {
         val welcomeJamiFragment = WelcomeJamiFragment()
-        supportFragmentManager.beginTransaction()
-            .replace(
-                R.id.conversation,
-                welcomeJamiFragment,
-                welcomeJamiFragment::class.java.simpleName
-            )
-            .commit()
+        supportFragmentManager.commit {
+            setReorderingAllowed(true)
+            replace(R.id.conversation, welcomeJamiFragment, welcomeJamiFragment::class.java.simpleName)
+        }
         fWelcomeJami = welcomeJamiFragment
         fConversation = null
     }
@@ -467,7 +465,7 @@ class HomeActivity : AppCompatActivity(), ContactPickerFragment.OnContactedPicke
                 intent?.let { conversation.handleShareIntent(it) }
             }.commit()
         fConversation = conversation
-        mBinding!!.panel.openPane()
+        mBinding?.panel?.openPane()
     }
 
     fun goToAdvancedSettings() {
diff --git a/jami-android/app/src/main/java/cx/ring/fragments/ConversationFragment.kt b/jami-android/app/src/main/java/cx/ring/fragments/ConversationFragment.kt
index 9c0c03eda..16fcfe157 100644
--- a/jami-android/app/src/main/java/cx/ring/fragments/ConversationFragment.kt
+++ b/jami-android/app/src/main/java/cx/ring/fragments/ConversationFragment.kt
@@ -136,6 +136,12 @@ class ConversationFragment : BaseSupportFragment<ConversationPresenter, Conversa
         mAdapter?.let { adapter ->
             adapter.updateDataset(conversation.toMutableList())
             loading = false
+            binding?.histList?.doOnNextLayout {
+                it.animate()
+                    .alpha(1f)
+                    .setDuration(220)
+                    .start()
+            }
         }
     }
 
@@ -1015,6 +1021,7 @@ class ConversationFragment : BaseSupportFragment<ConversationPresenter, Conversa
         }
     }
 
+
 //    fun blockContactRequest() {
 //        presenter.onBlockIncomingContactRequest()
 //    }
diff --git a/jami-android/app/src/main/res/layout/frag_conversation.xml b/jami-android/app/src/main/res/layout/frag_conversation.xml
index c14c6e632..f1a0b2622 100644
--- a/jami-android/app/src/main/res/layout/frag_conversation.xml
+++ b/jami-android/app/src/main/res/layout/frag_conversation.xml
@@ -161,7 +161,9 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
             android:listSelector="@color/transparent"
             android:paddingBottom="60dp"
             android:transcriptMode="normal"
-            app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
+            android:alpha="0"
+            app:layoutManager="LinearLayoutManager"
+            app:layout_behavior="@string/appbar_scrolling_view_behavior"
             app:stackFromEnd="true"
             tools:listitem="@layout/item_conv_msg_peer" />
 
@@ -328,7 +330,6 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_alignParentBottom="true"
-            android:animateLayoutChanges="true"
             android:background="@drawable/textmsg_bg_input"
             android:orientation="vertical">
 
diff --git a/jami-android/app/src/main/res/layout/item_smartlist.xml b/jami-android/app/src/main/res/layout/item_smartlist.xml
index 9472f8430..e7e9a9148 100644
--- a/jami-android/app/src/main/res/layout/item_smartlist.xml
+++ b/jami-android/app/src/main/res/layout/item_smartlist.xml
@@ -19,6 +19,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
     android:layout_width="match_parent"
     android:layout_height="72dp"
     android:background="@drawable/background_item_smartlist"
+    android:foreground="?attr/selectableItemBackground"
     android:descendantFocusability="blocksDescendants"
     android:paddingLeft="16dp"
     android:paddingTop="8dp"
-- 
GitLab