Bläddra i källkod

make unread work for chat messages based on adapter data

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
Andy Scherzinger 3 år sedan
förälder
incheckning
10f2c3be3a
1 ändrade filer med 31 tillägg och 11 borttagningar
  1. 31 11
      app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt

+ 31 - 11
app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt

@@ -2051,6 +2051,22 @@ class ChatController(args: Bundle) :
             if (!isFromTheFuture) {
                 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
+                }
+
+                for (i in chatMessageList.indices) {
                     if (chatMessageList.size > i + 1) {
                         if (TextUtils.isEmpty(chatMessageList[i].systemMessage) &&
                             TextUtils.isEmpty(chatMessageList[i + 1].systemMessage) &&
@@ -2069,12 +2085,6 @@ class ChatController(args: Bundle) :
                     chatMessage.isOneToOneConversation =
                         currentConversation?.type == Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL
                     chatMessage.activeUser = conversationUser
-
-                    if (previousMessageId > NO_PREVIOUS_MESSAGE_ID) {
-                        chatMessage.previousMessageId = previousMessageId
-                    }
-
-                    previousMessageId = chatMessage.jsonMessageId
                 }
 
                 if (adapter != null) {
@@ -2098,15 +2108,25 @@ class ChatController(args: Bundle) :
                 val isThereANewNotice =
                     shouldAddNewMessagesNotice || adapter?.getMessagePositionByIdInReverse("-1") != -1
 
-                var previousMessageId = -1
+                var previousMessageId = NO_PREVIOUS_MESSAGE_ID
                 for (i in chatMessageList.indices.reversed()) {
-                    chatMessage = chatMessageList[i]
+                    val chatMessageItem = chatMessageList[i]
 
                     if (previousMessageId > NO_PREVIOUS_MESSAGE_ID) {
-                        chatMessage.previousMessageId = previousMessageId
+                        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 = chatMessage.jsonMessageId
+                    previousMessageId = chatMessageItem.jsonMessageId
+                }
+
+                for (i in chatMessageList.indices) {
+                    chatMessage = chatMessageList[i]
 
                     chatMessage.activeUser = conversationUser
 
@@ -2334,7 +2354,7 @@ class ChatController(args: Bundle) :
                     }
                     R.id.action_mark_as_unread -> {
                         val chatMessage = message as ChatMessage?
-                        if (chatMessage!!.previousMessageId > 0) {
+                        if (chatMessage!!.previousMessageId > NO_PREVIOUS_MESSAGE_ID) {
                             ncApi!!.setChatReadMarker(
                                 credentials,
                                 ApiUtils.getUrlForSetChatReadMarker(