From fb9d1c5c0d6be368fe6418ae87c6bdd915916b0d Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 27 Aug 2024 10:28:24 +0200 Subject: [PATCH] Prevent staying in assistant when logging in if login was denied once due to invalid password --- .../java/org/linphone/ui/main/MainActivity.kt | 3 +++ .../ui/main/viewmodel/MainViewModel.kt | 23 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/app/src/main/java/org/linphone/ui/main/MainActivity.kt b/app/src/main/java/org/linphone/ui/main/MainActivity.kt index 5fb9afe8c..caddad140 100644 --- a/app/src/main/java/org/linphone/ui/main/MainActivity.kt +++ b/app/src/main/java/org/linphone/ui/main/MainActivity.kt @@ -317,6 +317,8 @@ class MainActivity : GenericActivity() { } override fun onPause() { + viewModel.enableAccountMonitoring(false) + currentlyDisplayedAuthDialog?.dismiss() currentlyDisplayedAuthDialog = null @@ -349,6 +351,7 @@ class MainActivity : GenericActivity() { override fun onResume() { super.onResume() + viewModel.enableAccountMonitoring(true) viewModel.checkForNewAccount() viewModel.updateNetworkReachability() viewModel.updatePostNotificationsPermission() diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt index 4d114312a..82d064e89 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt @@ -118,6 +118,8 @@ class MainViewModel @UiThread constructor() : ViewModel() { private var firstAccountRegistered: Boolean = false + private var monitorAccount = false + private val coreListener = object : CoreListenerStub() { @WorkerThread override fun onGlobalStateChanged(core: Core, state: GlobalState?, message: String) { @@ -192,6 +194,8 @@ class MainViewModel @UiThread constructor() : ViewModel() { state: RegistrationState?, message: String ) { + if (!monitorAccount) return + when (state) { RegistrationState.Failed -> { if (account == core.defaultAccount) { @@ -244,6 +248,8 @@ class MainViewModel @UiThread constructor() : ViewModel() { @WorkerThread override fun onDefaultAccountChanged(core: Core, account: Account?) { + if (!monitorAccount) return + if (account == null) { Log.w("$TAG Default account is now null!") } else { @@ -262,6 +268,8 @@ class MainViewModel @UiThread constructor() : ViewModel() { @WorkerThread override fun onAccountRemoved(core: Core, account: Account) { + if (!monitorAccount) return + Log.w( "$TAG Account [${account.params.identityAddress?.asStringUriOnly()}] has been removed!" ) @@ -280,6 +288,7 @@ class MainViewModel @UiThread constructor() : ViewModel() { defaultAccountRegistrationFailed = false showAlert.value = false maxAlertLevel.value = NONE + enableAccountMonitoring(true) coreContext.postOnCoreThread { core -> accountsFound = core.accountList.size @@ -377,6 +386,20 @@ class MainViewModel @UiThread constructor() : ViewModel() { } } + @UiThread + fun enableAccountMonitoring(enable: Boolean) { + if (enable != monitorAccount) { + monitorAccount = enable + Log.i( + "$TAG Account monitoring is now [${if (monitorAccount) "enabled" else "disabled"}]" + ) + } else { + Log.i( + "$TAG Account monitoring is already [${if (monitorAccount) "enabled" else "disabled"}], nothing to do" + ) + } + } + @WorkerThread private fun computeNonDefaultAccountNotificationsCount() { var count = 0