Selaa lähdekoodia

Merge pull request #2289 from nextcloud/bugfix/2287/fixSwipeToReply

Make sure to set swipe-to-reply after the room info has been loaded
Tim Krüger 2 vuotta sitten
vanhempi
commit
b85ec904c1
1 muutettua tiedostoa jossa 24 lisäystä ja 14 poistoa
  1. 24 14
      app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt

+ 24 - 14
app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt

@@ -355,6 +355,8 @@ class ChatController(args: Bundle) :
                                 conversationUser
                             )
 
+                        setupSwipeToReply()
+
                         try {
                             setupMentionAutocomplete()
                             checkShowCallButtons()
@@ -389,6 +391,27 @@ class ChatController(args: Bundle) :
         }
     }
 
+    private fun setupSwipeToReply() {
+        if (hasChatPermission && !isReadOnlyConversation()) {
+            val messageSwipeController = MessageSwipeCallback(
+                activity!!,
+                object : MessageSwipeActions {
+                    override fun showReplyUI(position: Int) {
+                        val chatMessage = adapter?.items?.get(position)?.item as ChatMessage?
+                        replyToMessage(chatMessage)
+                    }
+                }
+            )
+
+            val itemTouchHelper = ItemTouchHelper(messageSwipeController)
+            try {
+                itemTouchHelper.attachToRecyclerView(binding.messagesListView)
+            } catch (npe: NullPointerException) {
+                Log.i(TAG, "UI already teared down", npe)
+            }
+        }
+    }
+
     private fun handleFromNotification() {
         var apiVersion = 1
         // FIXME Can this be called for guests?
@@ -610,20 +633,7 @@ class ChatController(args: Bundle) :
             }
         }
 
-        if (context != null && hasChatPermission && !isReadOnlyConversation()) {
-            val messageSwipeController = MessageSwipeCallback(
-                activity!!,
-                object : MessageSwipeActions {
-                    override fun showReplyUI(position: Int) {
-                        val chatMessage = adapter?.items?.get(position)?.item as ChatMessage?
-                        replyToMessage(chatMessage)
-                    }
-                }
-            )
-
-            val itemTouchHelper = ItemTouchHelper(messageSwipeController)
-            itemTouchHelper.attachToRecyclerView(binding.messagesListView)
-        }
+        setupSwipeToReply()
 
         layoutManager = binding.messagesListView.layoutManager as LinearLayoutManager?