From 6893d35a93a15c4975b4fc4b70ea1314ab6c9979 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 3 Sep 2024 16:49:28 +0200 Subject: [PATCH] Fixed muted state in conversations list cell when updated from conversation --- .../ui/main/chat/fragment/ConversationFragment.kt | 2 ++ .../main/chat/fragment/ConversationsListFragment.kt | 12 ++++++++++++ .../linphone/ui/main/chat/model/ConversationModel.kt | 7 +++++++ .../ui/main/viewmodel/SharedMainViewModel.kt | 4 ++++ 4 files changed, 25 insertions(+) diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt index 2a71d3b61..206885acd 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt @@ -1049,12 +1049,14 @@ open class ConversationFragment : SlidingPaneChildFragment() { Log.i("$TAG Muting conversation") viewModel.mute() popupWindow.dismiss() + sharedViewModel.forceRefreshDisplayedConversation.value = Event(true) } popupView.setUnmuteClickListener { Log.i("$TAG Un-muting conversation") viewModel.unMute() popupWindow.dismiss() + sharedViewModel.forceRefreshDisplayedConversation.value = Event(true) } popupView.setConfigureEphemeralMessagesClickListener { diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt index 6a7458ac6..abddb73f0 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt @@ -281,6 +281,18 @@ class ConversationsListFragment : AbstractMainFragment() { } } + sharedViewModel.forceRefreshDisplayedConversation.observe(viewLifecycleOwner) { + it.consume { + val displayChatRoom = sharedViewModel.displayedChatRoom + if (displayChatRoom != null) { + val found = listViewModel.conversations.value.orEmpty().find { model -> + model.chatRoom == displayChatRoom + } + found?.updateMuteState() + } + } + } + sharedViewModel.updateUnreadMessageCountForCurrentConversationEvent.observe( viewLifecycleOwner ) { 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 94cd159a7..e35b512e5 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 @@ -206,6 +206,13 @@ class ConversationModel @WorkerThread constructor(val chatRoom: ChatRoom) { } } + @UiThread + fun updateMuteState() { + coreContext.postOnCoreThread { + isMuted.postValue(chatRoom.muted) + } + } + @UiThread fun toggleMute() { coreContext.postOnCoreThread { diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt index b4b8c835c..4c08aa2c8 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt @@ -127,6 +127,10 @@ class SharedMainViewModel @UiThread constructor() : ViewModel() { MutableLiveData>() } + val forceRefreshDisplayedConversation: MutableLiveData> by lazy { + MutableLiveData>() + } + val forceRefreshConversations: MutableLiveData> by lazy { MutableLiveData>() }