diff --git a/app/src/main/java/org/linphone/ui/main/fragment/DrawerMenuFragment.kt b/app/src/main/java/org/linphone/ui/main/fragment/DrawerMenuFragment.kt index 95fccd147..a85fa4785 100644 --- a/app/src/main/java/org/linphone/ui/main/fragment/DrawerMenuFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/fragment/DrawerMenuFragment.kt @@ -170,6 +170,14 @@ class DrawerMenuFragment : GenericMainFragment() { } } } + + sharedViewModel.refreshDrawerMenuQuitButtonEvent.observe(viewLifecycleOwner) { + it.consume { + coreContext.postOnCoreThread { + viewModel.checkIfKeepAliveServiceIsEnabled() + } + } + } } private fun showAccountPopupMenu(view: View, account: Account) { diff --git a/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsAdvancedFragment.kt b/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsAdvancedFragment.kt index 9c92dbd74..733b7360c 100644 --- a/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsAdvancedFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsAdvancedFragment.kt @@ -32,6 +32,7 @@ import org.linphone.databinding.SettingsAdvancedFragmentBinding import org.linphone.ui.GenericActivity import org.linphone.ui.main.fragment.GenericMainFragment import org.linphone.ui.main.settings.viewmodel.SettingsViewModel +import org.linphone.utils.Event @UiThread class SettingsAdvancedFragment : GenericMainFragment() { @@ -105,6 +106,12 @@ class SettingsAdvancedFragment : GenericMainFragment() { setupOutputAudioDevicePicker() } + viewModel.keepAliveServiceSettingChangedEvent.observe(viewLifecycleOwner) { + it.consume { + sharedViewModel.refreshDrawerMenuQuitButtonEvent.postValue(Event(true)) + } + } + startPostponedEnterTransition() } diff --git a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt index 653d51386..0f39a1c2b 100644 --- a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt @@ -64,6 +64,10 @@ class SettingsViewModel MutableLiveData>() } + val keepAliveServiceSettingChangedEvent: MutableLiveData> by lazy { + MutableLiveData>() + } + // Security settings val isVfsEnabled = MutableLiveData() @@ -689,6 +693,7 @@ class SettingsViewModel } else { coreContext.stopKeepAliveService() } + keepAliveServiceSettingChangedEvent.postValue(Event(true)) } } diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/DrawerMenuViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/DrawerMenuViewModel.kt index 54cd3452f..eb01e13f6 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/DrawerMenuViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/DrawerMenuViewModel.kt @@ -126,7 +126,8 @@ class DrawerMenuViewModel hideRecordings.postValue(corePreferences.disableCallRecordings) hideSettings.postValue(corePreferences.hideSettings) - hideQuitButton.postValue(!corePreferences.keepServiceAlive) + + checkIfKeepAliveServiceIsEnabled() computeAccountsList() computeShortcuts() @@ -169,6 +170,15 @@ class DrawerMenuViewModel } } + @WorkerThread + fun checkIfKeepAliveServiceIsEnabled() { + val useKeepAliveService = corePreferences.keepServiceAlive + hideQuitButton.postValue(!useKeepAliveService) + if (useKeepAliveService) { + Log.i("$TAG Keep alive service is enabled, do not hide quit button") + } + } + @WorkerThread private fun computeAccountsList() { accounts.value.orEmpty().forEach(AccountModel::destroy) 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 2ce556ef5..61aa32472 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 @@ -74,6 +74,10 @@ class SharedMainViewModel MutableLiveData>() } + val refreshDrawerMenuQuitButtonEvent: MutableLiveData> by lazy { + MutableLiveData>() + } + val forceUpdateAvailableNavigationItems: MutableLiveData> by lazy { MutableLiveData>() }