From c99acbb5e177b1c175880bcf6cee20447e8b5cc0 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 1 Dec 2025 10:55:57 +0100 Subject: [PATCH] Added missing update unread chat message count when a message has been retracted --- .../org/linphone/ui/main/chat/model/ConversationModel.kt | 1 + .../ui/main/chat/viewmodel/ConversationViewModel.kt | 2 ++ .../main/java/org/linphone/ui/main/model/AccountModel.kt | 6 ++++++ .../linphone/ui/main/viewmodel/AbstractMainViewModel.kt | 5 +++++ .../java/org/linphone/ui/main/viewmodel/MainViewModel.kt | 8 ++++++++ 5 files changed, 22 insertions(+) diff --git a/app/src/main/java/org/linphone/ui/main/chat/model/ConversationModel.kt b/app/src/main/java/org/linphone/ui/main/chat/model/ConversationModel.kt index 6e6a56c45..3cf329822 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/model/ConversationModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/model/ConversationModel.kt @@ -178,6 +178,7 @@ class ConversationModel Log.i("$TAG Last message [${message.messageId}] has been retracted") updateLastMessage() } + unreadMessageCount.postValue(chatRoom.unreadMessagesCount) } @WorkerThread diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt index 797db9f8d..ea71e1f1c 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt @@ -313,6 +313,8 @@ class ConversationViewModel if (message.isOutgoing) { messageDeletedEvent.postValue(Event(true)) } + + unreadMessagesCount.postValue(chatRoom.unreadMessagesCount) } @WorkerThread diff --git a/app/src/main/java/org/linphone/ui/main/model/AccountModel.kt b/app/src/main/java/org/linphone/ui/main/model/AccountModel.kt index 65100beb5..776654f03 100644 --- a/app/src/main/java/org/linphone/ui/main/model/AccountModel.kt +++ b/app/src/main/java/org/linphone/ui/main/model/AccountModel.kt @@ -81,6 +81,7 @@ class AccountModel update() } + @WorkerThread override fun onMessageWaitingIndicationChanged( account: Account, mwi: MessageWaitingIndication @@ -110,6 +111,11 @@ class AccountModel computeNotificationsCount() } + @WorkerThread + override fun onMessageRetracted(core: Core, chatRoom: ChatRoom, message: ChatMessage) { + computeNotificationsCount() + } + @WorkerThread override fun onMessagesReceived( core: Core, diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/AbstractMainViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/AbstractMainViewModel.kt index e81993a00..0e0cba03d 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/AbstractMainViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/AbstractMainViewModel.kt @@ -140,6 +140,11 @@ open class AbstractMainViewModel computeUnreadMessagesCount() } + @WorkerThread + override fun onMessageRetracted(core: Core, chatRoom: ChatRoom, message: ChatMessage) { + computeUnreadMessagesCount() + } + @WorkerThread override fun onGlobalStateChanged(core: Core, state: GlobalState?, message: String) { if (core.globalState == GlobalState.On) { diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt index 0d84839f4..afb627542 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt @@ -197,6 +197,14 @@ class MainViewModel } } + @WorkerThread + override fun onMessageRetracted(core: Core, chatRoom: ChatRoom, message: ChatMessage) { + val account = LinphoneUtils.getAccountForAddress(chatRoom.localAddress) + if (account != null && account != core.defaultAccount) { + computeNonDefaultAccountNotificationsCount() + } + } + @WorkerThread override fun onNetworkReachable(core: Core, reachable: Boolean) { Log.i(