From 10f2c3be3adfcba5ff66fb65a352a2248f61139b Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Wed, 29 Dec 2021 17:04:34 +0100 Subject: [PATCH] make unread work for chat messages based on adapter data Signed-off-by: Andy Scherzinger --- .../talk/controllers/ChatController.kt | 42 ++++++++++++++----- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt index 862942403..05ca694fa 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt +++ b/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(