make unread work for chat messages based on adapter data

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
This commit is contained in:
Andy Scherzinger 2021-12-29 17:04:34 +01:00 committed by Marcel Hibbe
parent 58c0106ec7
commit 10f2c3be3a
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B

View File

@ -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(