From f7ba6fc87cc94c9da89949542c4c24f91b32869d Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 13 Sep 2021 16:39:50 +0200 Subject: [PATCH] Fix & workaround for chat bubble notification --- .../activities/chat_bubble/ChatBubbleActivity.kt | 5 +++++ .../org/linphone/notifications/NotificationsManager.kt | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/chat_bubble/ChatBubbleActivity.kt b/app/src/main/java/org/linphone/activities/chat_bubble/ChatBubbleActivity.kt index 607a0b9f4..149e746d8 100644 --- a/app/src/main/java/org/linphone/activities/chat_bubble/ChatBubbleActivity.kt +++ b/app/src/main/java/org/linphone/activities/chat_bubble/ChatBubbleActivity.kt @@ -86,7 +86,10 @@ class ChatBubbleActivity : GenericActivity() { return } + // Workaround for the removed notification when a chat room is marked as read + coreContext.notificationsManager.dismissNotificationUponReadChatRoom = false chatRoom.markAsRead() + coreContext.notificationsManager.dismissNotificationUponReadChatRoom = true viewModel = ViewModelProvider( this, @@ -147,6 +150,8 @@ class ChatBubbleActivity : GenericActivity() { ) binding.setOpenAppClickListener { + coreContext.notificationsManager.currentlyDisplayedChatRoomAddress = null + val intent = Intent(this, MainActivity::class.java) intent.putExtra("RemoteSipUri", remoteSipUri) intent.putExtra("LocalSipUri", localSipUri) diff --git a/app/src/main/java/org/linphone/notifications/NotificationsManager.kt b/app/src/main/java/org/linphone/notifications/NotificationsManager.kt index 514c7a742..397295dec 100644 --- a/app/src/main/java/org/linphone/notifications/NotificationsManager.kt +++ b/app/src/main/java/org/linphone/notifications/NotificationsManager.kt @@ -105,6 +105,8 @@ class NotificationsManager(private val context: Context) { var currentlyDisplayedChatRoomAddress: String? = null + var dismissNotificationUponReadChatRoom: Boolean = true + private val listener: CoreListenerStub = object : CoreListenerStub() { override fun onCallStateChanged( core: Core, @@ -166,8 +168,12 @@ class NotificationsManager(private val context: Context) { } override fun onChatRoomRead(core: Core, chatRoom: ChatRoom) { - Log.i("[Notifications Manager] Chat room [$chatRoom] has been marked as read, removing notification if any") - dismissChatNotification(chatRoom) + if (dismissNotificationUponReadChatRoom) { + Log.i("[Notifications Manager] Chat room [$chatRoom] has been marked as read, removing notification if any") + dismissChatNotification(chatRoom) + } else { + Log.i("[Notifications Manager] Chat room [$chatRoom] has been marked as read, not removing notification, maybe because of a chat bubble?") + } } }