calculate previous message id when possible

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
This commit is contained in:
Andy Scherzinger 2021-12-28 19:43:05 +01:00 committed by Marcel Hibbe
parent de085df3bc
commit 58c0106ec7
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
2 changed files with 49 additions and 29 deletions

View File

@ -2049,8 +2049,8 @@ class ChatController(args: Bundle) :
var countGroupedMessages = 0 var countGroupedMessages = 0
if (!isFromTheFuture) { if (!isFromTheFuture) {
var previousMessageId = NO_PREVIOUS_MESSAGE_ID
for (i in chatMessageList.indices) { for (i in chatMessageList.indices.reversed()) {
if (chatMessageList.size > i + 1) { if (chatMessageList.size > i + 1) {
if (TextUtils.isEmpty(chatMessageList[i].systemMessage) && if (TextUtils.isEmpty(chatMessageList[i].systemMessage) &&
TextUtils.isEmpty(chatMessageList[i + 1].systemMessage) && TextUtils.isEmpty(chatMessageList[i + 1].systemMessage) &&
@ -2069,6 +2069,12 @@ class ChatController(args: Bundle) :
chatMessage.isOneToOneConversation = chatMessage.isOneToOneConversation =
currentConversation?.type == Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL currentConversation?.type == Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL
chatMessage.activeUser = conversationUser chatMessage.activeUser = conversationUser
if (previousMessageId > NO_PREVIOUS_MESSAGE_ID) {
chatMessage.previousMessageId = previousMessageId
}
previousMessageId = chatMessage.jsonMessageId
} }
if (adapter != null) { if (adapter != null) {
@ -2092,9 +2098,16 @@ class ChatController(args: Bundle) :
val isThereANewNotice = val isThereANewNotice =
shouldAddNewMessagesNotice || adapter?.getMessagePositionByIdInReverse("-1") != -1 shouldAddNewMessagesNotice || adapter?.getMessagePositionByIdInReverse("-1") != -1
for (i in chatMessageList.indices) { var previousMessageId = -1
for (i in chatMessageList.indices.reversed()) {
chatMessage = chatMessageList[i] chatMessage = chatMessageList[i]
if (previousMessageId > NO_PREVIOUS_MESSAGE_ID) {
chatMessage.previousMessageId = previousMessageId
}
previousMessageId = chatMessage.jsonMessageId
chatMessage.activeUser = conversationUser chatMessage.activeUser = conversationUser
val shouldScroll = val shouldScroll =
@ -2321,6 +2334,7 @@ class ChatController(args: Bundle) :
} }
R.id.action_mark_as_unread -> { R.id.action_mark_as_unread -> {
val chatMessage = message as ChatMessage? val chatMessage = message as ChatMessage?
if (chatMessage!!.previousMessageId > 0) {
ncApi!!.setChatReadMarker( ncApi!!.setChatReadMarker(
credentials, credentials,
ApiUtils.getUrlForSetChatReadMarker( ApiUtils.getUrlForSetChatReadMarker(
@ -2328,7 +2342,7 @@ class ChatController(args: Bundle) :
conversationUser?.baseUrl, conversationUser?.baseUrl,
roomToken roomToken
), ),
chatMessage!!.jsonMessageId.minus(1) chatMessage.previousMessageId
) )
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
@ -2349,6 +2363,7 @@ class ChatController(args: Bundle) :
// unused atm // unused atm
} }
}) })
}
true true
} }
R.id.action_forward_message -> { R.id.action_forward_message -> {
@ -2503,8 +2518,10 @@ class ChatController(args: Bundle) :
menu.findItem(R.id.action_delete_message).isVisible = isShowMessageDeletionButton(message) menu.findItem(R.id.action_delete_message).isVisible = isShowMessageDeletionButton(message)
menu.findItem(R.id.action_forward_message).isVisible = menu.findItem(R.id.action_forward_message).isVisible =
ChatMessage.MessageType.REGULAR_TEXT_MESSAGE == message.getMessageType() ChatMessage.MessageType.REGULAR_TEXT_MESSAGE == message.getMessageType()
menu.findItem(R.id.action_mark_as_unread).isVisible = message.previousMessageId > -1 &&
ChatMessage.MessageType.SYSTEM_MESSAGE != message.getMessageType()
if (menu.hasVisibleItems()) { if (menu.hasVisibleItems()) {
if (Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
setForceShowIcon(true) setForceShowIcon(true)
} }
show() show()
@ -2755,5 +2772,6 @@ class ChatController(args: Bundle) :
private const val SEMI_TRANSPARENT_INT: Int = 99 private const val SEMI_TRANSPARENT_INT: Int = 99
private const val VOICE_MESSAGE_SEEKBAR_BASE: Int = 1000 private const val VOICE_MESSAGE_SEEKBAR_BASE: Int = 1000
private const val SECOND: Long = 1000 private const val SECOND: Long = 1000
private const val NO_PREVIOUS_MESSAGE_ID: Int = -1
} }
} }

View File

@ -62,6 +62,8 @@ public class ChatMessage implements MessageContentType, MessageContentType.Image
public boolean isDeleted; public boolean isDeleted;
@JsonField(name = "id") @JsonField(name = "id")
public int jsonMessageId; public int jsonMessageId;
@JsonIgnore
public int previousMessageId = -1;
@JsonField(name = "token") @JsonField(name = "token")
public String token; public String token;
// guests or users // guests or users