Browse Source

Extract duplicated code to function

The newly created function 'ChatController#determinePreviousMessageIds'
contains now the duplicated code from functions
'ChatCtonroller#processMessagesFromTheFuture' and
'ChatController#processMessagesNotFromTheFuture'.

Signed-off-by: Tim Krüger <t@timkrueger.me>
Tim Krüger 2 years ago
parent
commit
57ddf9af60
1 changed files with 21 additions and 32 deletions
  1. 21 32
      app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt

+ 21 - 32
app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt

@@ -2382,22 +2382,7 @@ class ChatController(args: Bundle) :
         val isThereANewNotice =
             shouldAddNewMessagesNotice || adapter?.getMessagePositionByIdInReverse("-1") != -1
 
-        var previousMessageId = NO_PREVIOUS_MESSAGE_ID
-        for (i in chatMessageList.indices.reversed()) {
-            val chatMessageItem = chatMessageList[i]
-
-            if (previousMessageId > NO_PREVIOUS_MESSAGE_ID) {
-                chatMessageItem.previousMessageId = previousMessageId
-            } else if (adapter?.isEmpty != true) {
-                if (adapter!!.items[0].item is ChatMessage) {
-                    chatMessageItem.previousMessageId = (adapter!!.items[0].item as ChatMessage).jsonMessageId
-                } else if (adapter!!.items.size > 1 && adapter!!.items[1].item is ChatMessage) {
-                    chatMessageItem.previousMessageId = (adapter!!.items[1].item as ChatMessage).jsonMessageId
-                }
-            }
-
-            previousMessageId = chatMessageItem.jsonMessageId
-        }
+        determinePreviousMessageIds(chatMessageList)
 
         for (i in chatMessageList.indices) {
             chatMessage = chatMessageList[i]
@@ -2446,22 +2431,7 @@ class ChatController(args: Bundle) :
 
     private fun processMessagesNotFromTheFuture(chatMessageList: List<ChatMessage>) {
         var countGroupedMessages = 0
-        var previousMessageId = NO_PREVIOUS_MESSAGE_ID
-        for (i in chatMessageList.indices.reversed()) {
-            val chatMessage = chatMessageList[i]
-
-            if (previousMessageId > NO_PREVIOUS_MESSAGE_ID) {
-                chatMessage.previousMessageId = previousMessageId
-            } else if (adapter?.isEmpty != true) {
-                if (adapter!!.items[0].item is ChatMessage) {
-                    chatMessage.previousMessageId = (adapter!!.items[0].item as ChatMessage).jsonMessageId
-                } else if (adapter!!.items.size > 1 && adapter!!.items[1].item is ChatMessage) {
-                    chatMessage.previousMessageId = (adapter!!.items[1].item as ChatMessage).jsonMessageId
-                }
-            }
-
-            previousMessageId = chatMessage.jsonMessageId
-        }
+        determinePreviousMessageIds(chatMessageList)
 
         for (i in chatMessageList.indices) {
             if (chatMessageList.size > i + 1) {
@@ -2488,6 +2458,25 @@ class ChatController(args: Bundle) :
         scrollToRequestedMessageIfNeeded()
     }
 
+    private fun determinePreviousMessageIds(chatMessageList: List<ChatMessage>) {
+        var previousMessageId = NO_PREVIOUS_MESSAGE_ID
+        for (i in chatMessageList.indices.reversed()) {
+            val chatMessage = chatMessageList[i]
+
+            if (previousMessageId > NO_PREVIOUS_MESSAGE_ID) {
+                chatMessage.previousMessageId = previousMessageId
+            } else if (adapter?.isEmpty != true) {
+                if (adapter!!.items[0].item is ChatMessage) {
+                    chatMessage.previousMessageId = (adapter!!.items[0].item as ChatMessage).jsonMessageId
+                } else if (adapter!!.items.size > 1 && adapter!!.items[1].item is ChatMessage) {
+                    chatMessage.previousMessageId = (adapter!!.items[1].item as ChatMessage).jsonMessageId
+                }
+            }
+
+            previousMessageId = chatMessage.jsonMessageId
+        }
+    }
+
     private fun processHeaderChatLastGiven(response: Response<*>, isFromTheFuture: Boolean) {
         val xChatLastGivenHeader: String? = response.headers()["X-Chat-Last-Given"]
         if (response.headers().size > 0 && !TextUtils.isEmpty(xChatLastGivenHeader)) {