mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 03:59:35 +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
|
||||
if (!isFromTheFuture) {
|
||||
|
||||
for (i in chatMessageList.indices) {
|
||||
var previousMessageId = NO_PREVIOUS_MESSAGE_ID
|
||||
for (i in chatMessageList.indices.reversed()) {
|
||||
if (chatMessageList.size > i + 1) {
|
||||
if (TextUtils.isEmpty(chatMessageList[i].systemMessage) &&
|
||||
TextUtils.isEmpty(chatMessageList[i + 1].systemMessage) &&
|
||||
@ -2069,6 +2069,12 @@ 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) {
|
||||
@ -2092,9 +2098,16 @@ class ChatController(args: Bundle) :
|
||||
val isThereANewNotice =
|
||||
shouldAddNewMessagesNotice || adapter?.getMessagePositionByIdInReverse("-1") != -1
|
||||
|
||||
for (i in chatMessageList.indices) {
|
||||
var previousMessageId = -1
|
||||
for (i in chatMessageList.indices.reversed()) {
|
||||
chatMessage = chatMessageList[i]
|
||||
|
||||
if (previousMessageId > NO_PREVIOUS_MESSAGE_ID) {
|
||||
chatMessage.previousMessageId = previousMessageId
|
||||
}
|
||||
|
||||
previousMessageId = chatMessage.jsonMessageId
|
||||
|
||||
chatMessage.activeUser = conversationUser
|
||||
|
||||
val shouldScroll =
|
||||
@ -2321,34 +2334,36 @@ class ChatController(args: Bundle) :
|
||||
}
|
||||
R.id.action_mark_as_unread -> {
|
||||
val chatMessage = message as ChatMessage?
|
||||
ncApi!!.setChatReadMarker(
|
||||
credentials,
|
||||
ApiUtils.getUrlForSetChatReadMarker(
|
||||
ApiUtils.getChatApiVersion(conversationUser, intArrayOf(ApiUtils.APIv1)),
|
||||
conversationUser?.baseUrl,
|
||||
roomToken
|
||||
),
|
||||
chatMessage!!.jsonMessageId.minus(1)
|
||||
)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(object : Observer<GenericOverall> {
|
||||
override fun onSubscribe(d: Disposable) {
|
||||
// unused atm
|
||||
}
|
||||
if (chatMessage!!.previousMessageId > 0) {
|
||||
ncApi!!.setChatReadMarker(
|
||||
credentials,
|
||||
ApiUtils.getUrlForSetChatReadMarker(
|
||||
ApiUtils.getChatApiVersion(conversationUser, intArrayOf(ApiUtils.APIv1)),
|
||||
conversationUser?.baseUrl,
|
||||
roomToken
|
||||
),
|
||||
chatMessage.previousMessageId
|
||||
)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(object : Observer<GenericOverall> {
|
||||
override fun onSubscribe(d: Disposable) {
|
||||
// unused atm
|
||||
}
|
||||
|
||||
override fun onNext(t: GenericOverall) {
|
||||
// unused atm
|
||||
}
|
||||
override fun onNext(t: GenericOverall) {
|
||||
// unused atm
|
||||
}
|
||||
|
||||
override fun onError(e: Throwable) {
|
||||
Log.e(TAG, e.message, e)
|
||||
}
|
||||
override fun onError(e: Throwable) {
|
||||
Log.e(TAG, e.message, e)
|
||||
}
|
||||
|
||||
override fun onComplete() {
|
||||
// unused atm
|
||||
}
|
||||
})
|
||||
override fun onComplete() {
|
||||
// unused atm
|
||||
}
|
||||
})
|
||||
}
|
||||
true
|
||||
}
|
||||
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_forward_message).isVisible =
|
||||
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 (Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
setForceShowIcon(true)
|
||||
}
|
||||
show()
|
||||
@ -2755,5 +2772,6 @@ class ChatController(args: Bundle) :
|
||||
private const val SEMI_TRANSPARENT_INT: Int = 99
|
||||
private const val VOICE_MESSAGE_SEEKBAR_BASE: Int = 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;
|
||||
@JsonField(name = "id")
|
||||
public int jsonMessageId;
|
||||
@JsonIgnore
|
||||
public int previousMessageId = -1;
|
||||
@JsonField(name = "token")
|
||||
public String token;
|
||||
// guests or users
|
||||
|
Loading…
Reference in New Issue
Block a user