Fixed reply preview when a message has been deleted (locally or remotely)

This commit is contained in:
Sylvain Berfini 2025-11-24 12:43:56 +01:00
parent 8e76c60a38
commit 88e474533e

View file

@ -308,12 +308,7 @@ class ConversationViewModel
@WorkerThread @WorkerThread
override fun onMessageRetracted(chatRoom: ChatRoom, message: ChatMessage) { override fun onMessageRetracted(chatRoom: ChatRoom, message: ChatMessage) {
for (model in eventsList.reversed()) { updateRepliesUpTo(message)
if (model.model is MessageModel && model.model.replyToMessageId == message.messageId) {
model.model.computeReplyInfo()
break
}
}
if (message.isOutgoing) { if (message.isOutgoing) {
messageDeletedEvent.postValue(Event(true)) messageDeletedEvent.postValue(Event(true))
@ -322,12 +317,7 @@ class ConversationViewModel
@WorkerThread @WorkerThread
override fun onMessageContentEdited(chatRoom: ChatRoom, message: ChatMessage) { override fun onMessageContentEdited(chatRoom: ChatRoom, message: ChatMessage) {
for (model in eventsList.reversed()) { updateRepliesUpTo(message)
if (model.model is MessageModel && model.model.replyToMessageId == message.messageId) {
model.model.computeReplyInfo()
break
}
}
} }
} }
@ -464,7 +454,9 @@ class ConversationViewModel
Log.i("$TAG Removing chat message id [${chatMessageModel.id}] from events list") Log.i("$TAG Removing chat message id [${chatMessageModel.id}] from events list")
list.remove(found) list.remove(found)
eventsList = list eventsList = list
updateEvents.postValue(Event(true)) updateEvents.postValue(Event(true))
isEmpty.postValue(eventsList.isEmpty()) isEmpty.postValue(eventsList.isEmpty())
} else { } else {
@ -476,6 +468,8 @@ class ConversationViewModel
Log.i("$TAG Deleting message id [${chatMessageModel.id}] from database") Log.i("$TAG Deleting message id [${chatMessageModel.id}] from database")
chatRoom.deleteMessage(chatMessageModel.chatMessage) chatRoom.deleteMessage(chatMessageModel.chatMessage)
messageDeletedEvent.postValue(Event(true)) messageDeletedEvent.postValue(Event(true))
updateRepliesUpTo(chatMessageModel.chatMessage)
} }
} }
@ -937,6 +931,21 @@ class ConversationViewModel
} }
} }
@WorkerThread
private fun updateRepliesUpTo(chatMessage: ChatMessage) {
for (model in eventsList.reversed()) {
if (model.model is MessageModel) {
if (model.model.replyToMessageId == chatMessage.messageId) {
model.model.computeReplyInfo()
}
if (model.model.timestamp < chatMessage.time) {
break
}
}
}
}
@WorkerThread @WorkerThread
private fun computeComposingLabel() { private fun computeComposingLabel() {
if (!isChatRoomInitialized()) return if (!isChatRoomInitialized()) return