From 8f291145d23e4ba235423dbc69f6d7c977ec24c8 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 ++++++ .../main/res/navigation/assistant_nav_graph.xml | 1 + app/src/main/res/navigation/chat_nav_graph.xml | 2 +- app/src/main/res/navigation/contacts_nav_graph.xml | 3 ++- app/src/main/res/navigation/history_nav_graph.xml | 1 + app/src/main/res/navigation/main_nav_graph.xml | 1 + app/src/main/res/navigation/settings_nav_graph.xml | 1 + 9 files changed, 28 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 7982d9fcf..e489ffd6f 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 : MessageNotifierViewModel() { } } - 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/assistant_nav_graph.xml b/app/src/main/res/navigation/assistant_nav_graph.xml index 4ca6f8613..9c353cc9e 100644 --- a/app/src/main/res/navigation/assistant_nav_graph.xml +++ b/app/src/main/res/navigation/assistant_nav_graph.xml @@ -2,6 +2,7 @@ + app:destination="@id/chat_nav_graph" />