From 528855c5d583cafadeab9f3ab10c1bce96296e05 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 3 Oct 2023 16:25:26 +0200 Subject: [PATCH] Updated navigation & other views when switching default account --- .../ui/main/fragment/BottomNavBarFragment.kt | 5 +++++ .../history/fragment/StartCallFragment.kt | 5 +++++ .../history/viewmodel/StartCallViewModel.kt | 19 +++++++++++----- .../main/viewmodel/AbstractTopBarViewModel.kt | 2 ++ .../main/viewmodel/BottomNavBarViewModel.kt | 22 +++++++++++++------ 5 files changed, 41 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/main/fragment/BottomNavBarFragment.kt b/app/src/main/java/org/linphone/ui/main/fragment/BottomNavBarFragment.kt index 70edc7914..74a4e681e 100644 --- a/app/src/main/java/org/linphone/ui/main/fragment/BottomNavBarFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/fragment/BottomNavBarFragment.kt @@ -100,5 +100,10 @@ class BottomNavBarFragment : Fragment() { viewModel.resetMissedCallsCount() } } + + sharedViewModel.defaultAccountChangedEvent.observe(viewLifecycleOwner) { + // Do not consume it! + viewModel.updateAvailableMenus() + } } } diff --git a/app/src/main/java/org/linphone/ui/main/history/fragment/StartCallFragment.kt b/app/src/main/java/org/linphone/ui/main/history/fragment/StartCallFragment.kt index 616a95813..4fb5c5a47 100644 --- a/app/src/main/java/org/linphone/ui/main/history/fragment/StartCallFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/history/fragment/StartCallFragment.kt @@ -180,6 +180,11 @@ class StartCallFragment : GenericFragment() { viewModel.isNumpadVisible.value = false } } + + sharedViewModel.defaultAccountChangedEvent.observe(viewLifecycleOwner) { + // Do not consume it! + viewModel.updateGroupCallButtonVisibility() + } } override fun onPause() { diff --git a/app/src/main/java/org/linphone/ui/main/history/viewmodel/StartCallViewModel.kt b/app/src/main/java/org/linphone/ui/main/history/viewmodel/StartCallViewModel.kt index 71f0498db..15d2b1144 100644 --- a/app/src/main/java/org/linphone/ui/main/history/viewmodel/StartCallViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/history/viewmodel/StartCallViewModel.kt @@ -58,6 +58,8 @@ class StartCallViewModel @UiThread constructor() : ViewModel() { val isNumpadVisible = MutableLiveData() + val isGroupCallAvailable = MutableLiveData() + val appendDigitToSearchBarEvent: MutableLiveData> by lazy { MutableLiveData>() } @@ -127,15 +129,12 @@ class StartCallViewModel @UiThread constructor() : ViewModel() { } ) + updateGroupCallButtonVisibility() + coreContext.postOnCoreThread { core -> val defaultAccount = core.defaultAccount limitSearchToLinphoneAccounts = defaultAccount?.isInSecureMode() ?: false - val hideGroupCall = corePreferences.disableMeetings || !LinphoneUtils.isRemoteConferencingAvailable( - core - ) - hideGroupCallButton.postValue(hideGroupCall) - coreContext.contactsManager.addListener(contactsListener) magicSearch = core.createMagicSearch() magicSearch.limitedSearch = false @@ -159,6 +158,16 @@ class StartCallViewModel @UiThread constructor() : ViewModel() { searchFilter.value = "" } + @UiThread + fun updateGroupCallButtonVisibility() { + coreContext.postOnCoreThread { core -> + val hideGroupCall = corePreferences.disableMeetings || !LinphoneUtils.isRemoteConferencingAvailable( + core + ) + hideGroupCallButton.postValue(hideGroupCall) + } + } + @UiThread fun switchBetweenKeyboardAndNumpad() { val showKeyboard = isNumpadVisible.value == true diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/AbstractTopBarViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/AbstractTopBarViewModel.kt index bdbc7a707..606617374 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/AbstractTopBarViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/AbstractTopBarViewModel.kt @@ -92,6 +92,8 @@ open class AbstractTopBarViewModel @UiThread constructor() : ViewModel() { if (core.accountList.isNotEmpty()) { Log.i("$TAG Updating displayed default account") val defaultAccount = core.defaultAccount ?: core.accountList.first() + + account.value?.destroy() account.postValue(AccountModel(defaultAccount)) } } diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/BottomNavBarViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/BottomNavBarViewModel.kt index a713fc40d..296a52fa1 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/BottomNavBarViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/BottomNavBarViewModel.kt @@ -68,14 +68,9 @@ class BottomNavBarViewModel @UiThread constructor() : ViewModel() { coreContext.postOnCoreThread { core -> core.addListener(coreListener) updateMissedCallsCount() - - hideConversations.postValue(corePreferences.disableChat) - - val hideGroupCall = corePreferences.disableMeetings || !LinphoneUtils.isRemoteConferencingAvailable( - core - ) - hideMeetings.postValue(hideGroupCall) } + + updateAvailableMenus() } @UiThread @@ -106,4 +101,17 @@ class BottomNavBarViewModel @UiThread constructor() : ViewModel() { updateMissedCallsCount() } } + + @UiThread + fun updateAvailableMenus() { + coreContext.postOnCoreThread { core -> + hideConversations.postValue(corePreferences.disableChat) + + val hideGroupCall = + corePreferences.disableMeetings || !LinphoneUtils.isRemoteConferencingAvailable( + core + ) + hideMeetings.postValue(hideGroupCall) + } + } }