From 0da5d6d157f2cf3559562a24fdba2ea525ae9b05 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 19 Apr 2022 10:54:08 +0200 Subject: [PATCH] Fix reload of chat rooms when toggling one of the two hide chat room setting --- .../main/chat/viewmodels/ChatRoomsListViewModel.kt | 2 +- .../settings/fragments/ChatSettingsFragment.kt | 14 ++++++++++++++ .../settings/viewmodels/ChatSettingsViewModel.kt | 6 ++++++ app/src/main/res/navigation/chat_nav_graph.xml | 2 +- app/src/main/res/navigation/contacts_nav_graph.xml | 2 +- 5 files changed, 23 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatRoomsListViewModel.kt b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatRoomsListViewModel.kt index 1e9982c5f..64d6f3b10 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatRoomsListViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatRoomsListViewModel.kt @@ -141,7 +141,7 @@ class ChatRoomsListViewModel : ErrorReportingViewModel() { } } - private fun updateChatRooms() { + fun updateChatRooms() { chatRooms.value.orEmpty().forEach(ChatRoomViewModel::destroy) val list = arrayListOf() diff --git a/app/src/main/java/org/linphone/activities/main/settings/fragments/ChatSettingsFragment.kt b/app/src/main/java/org/linphone/activities/main/settings/fragments/ChatSettingsFragment.kt index 2a89ac47c..59bf64a39 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/fragments/ChatSettingsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/fragments/ChatSettingsFragment.kt @@ -26,6 +26,7 @@ import android.provider.Settings import android.view.View import androidx.lifecycle.ViewModelProvider import org.linphone.R +import org.linphone.activities.main.chat.viewmodels.ChatRoomsListViewModel import org.linphone.activities.main.settings.viewmodels.ChatSettingsViewModel import org.linphone.activities.navigateToEmptySetting import org.linphone.compatibility.Compatibility @@ -81,6 +82,12 @@ class ChatSettingsFragment : GenericSettingFragment } } } + + viewModel.reloadChatRoomsEvent.observe(viewLifecycleOwner) { + it.consume { + reloadChatRooms() + } + } } override fun goBack() { @@ -90,4 +97,11 @@ class ChatSettingsFragment : GenericSettingFragment navigateToEmptySetting() } } + + private fun reloadChatRooms() { + val listViewModel = requireActivity().run { + ViewModelProvider(this)[ChatRoomsListViewModel::class.java] + } + listViewModel.updateChatRooms() + } } diff --git a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/ChatSettingsViewModel.kt b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/ChatSettingsViewModel.kt index 4b8de0353..2c38d9045 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/ChatSettingsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/ChatSettingsViewModel.kt @@ -116,6 +116,7 @@ class ChatSettingsViewModel : GenericSettingsViewModel() { val hideEmptyRoomsListener = object : SettingListenerStub() { override fun onBoolValueChanged(newValue: Boolean) { prefs.hideEmptyRooms = newValue + reloadChatRoomsEvent.value = Event(true) } } val hideEmptyRooms = MutableLiveData() @@ -123,6 +124,7 @@ class ChatSettingsViewModel : GenericSettingsViewModel() { val hideRoomsRemovedProxiesListener = object : SettingListenerStub() { override fun onBoolValueChanged(newValue: Boolean) { prefs.hideRoomsFromRemovedProxies = newValue + reloadChatRoomsEvent.value = Event(true) } } val hideRoomsRemovedProxies = MutableLiveData() @@ -136,6 +138,10 @@ class ChatSettingsViewModel : GenericSettingsViewModel() { val vfs = MutableLiveData() + val reloadChatRoomsEvent: MutableLiveData> by lazy { + MutableLiveData>() + } + init { markAsReadNotifDismissal.value = prefs.markAsReadUponChatMessageNotificationDismissal downloadedMediaPublic.value = prefs.makePublicMediaFilesDownloaded && !prefs.vfsEnabled diff --git a/app/src/main/res/navigation/chat_nav_graph.xml b/app/src/main/res/navigation/chat_nav_graph.xml index 5d1682aa4..f6ab6f402 100644 --- a/app/src/main/res/navigation/chat_nav_graph.xml +++ b/app/src/main/res/navigation/chat_nav_graph.xml @@ -2,7 +2,7 @@ + app:destination="@id/chat_nav_graph" />