mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 20:19:42 +01:00
calculate previous message id when possible
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
This commit is contained in:
parent
de085df3bc
commit
58c0106ec7
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user