Fixed auth info requested dialog showing up after wrong password input in assistant + fixed default account not set in same scenario

This commit is contained in:
Sylvain Berfini 2023-06-06 11:47:23 +02:00
parent ba1708beaa
commit 8df1d2218d
4 changed files with 42 additions and 16 deletions

View file

@ -161,10 +161,19 @@ class AccountLoginViewModel(accountCreator: AccountCreator) : AbstractPhoneViewM
fun removeInvalidProxyConfig() {
val account = accountToCheck
account ?: return
val core = coreContext.core
val authInfo = account.findAuthInfo()
if (authInfo != null) coreContext.core.removeAuthInfo(authInfo)
coreContext.core.removeAccount(account)
if (authInfo != null) core.removeAuthInfo(authInfo)
core.removeAccount(account)
accountToCheck = null
// Make sure there is a valid default account
val accounts = core.accountList
if (accounts.isNotEmpty() && core.defaultAccount == null) {
core.defaultAccount = accounts.first()
core.refreshRegisters()
}
}
fun continueEvenIfInvalidCredentials() {

View file

@ -108,10 +108,19 @@ class GenericLoginViewModel(private val accountCreator: AccountCreator) : ViewMo
fun removeInvalidProxyConfig() {
val account = accountToCheck
account ?: return
val core = coreContext.core
val authInfo = account.findAuthInfo()
if (authInfo != null) coreContext.core.removeAuthInfo(authInfo)
coreContext.core.removeAccount(account)
if (authInfo != null) core.removeAuthInfo(authInfo)
core.removeAccount(account)
accountToCheck = null
// Make sure there is a valid default account
val accounts = core.accountList
if (accounts.isNotEmpty() && core.defaultAccount == null) {
core.defaultAccount = accounts.first()
core.refreshRegisters()
}
}
fun continueEvenIfInvalidCredentials() {

View file

@ -35,6 +35,7 @@ import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import androidx.core.view.doOnAttach
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.FragmentContainerView
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
@ -59,6 +60,9 @@ import org.linphone.activities.navigateToDialer
import org.linphone.compatibility.Compatibility
import org.linphone.contact.ContactsUpdatedListenerStub
import org.linphone.core.AuthInfo
import org.linphone.core.AuthMethod
import org.linphone.core.Core
import org.linphone.core.CoreListenerStub
import org.linphone.core.CorePreferences
import org.linphone.core.tools.Log
import org.linphone.databinding.MainActivityBinding
@ -109,6 +113,19 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
private var shouldTabsBeVisibleDependingOnDestination = true
private var shouldTabsBeVisibleDueToOrientationAndKeyboard = true
private val authenticationRequestedEvent: MutableLiveData<Event<AuthInfo>> by lazy {
MutableLiveData<Event<AuthInfo>>()
}
private val coreListener: CoreListenerStub = object : CoreListenerStub() {
override fun onAuthenticationRequested(core: Core, authInfo: AuthInfo, method: AuthMethod) {
Log.w(
"[Main Activity] Authentication requested for account [${authInfo.username}@${authInfo.domain}] with realm [${authInfo.realm}] using method [$method]"
)
authenticationRequestedEvent.value = Event(authInfo)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -144,7 +161,7 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
}
}
coreContext.authenticationRequestedEvent.observe(
authenticationRequestedEvent.observe(
this
) {
it.consume { authInfo ->
@ -183,9 +200,11 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
override fun onResume() {
super.onResume()
coreContext.contactsManager.addListener(listener)
coreContext.core.addListener(coreListener)
}
override fun onPause() {
coreContext.core.removeListener(coreListener)
coreContext.contactsManager.removeListener(listener)
super.onPause()
}

View file

@ -117,10 +117,6 @@ class CoreContext(
MutableLiveData<Event<String>>()
}
val authenticationRequestedEvent: MutableLiveData<Event<AuthInfo>> by lazy {
MutableLiveData<Event<AuthInfo>>()
}
val coroutineScope = CoroutineScope(Dispatchers.Main + SupervisorJob())
private val loggingService = Factory.instance().loggingService
@ -169,13 +165,6 @@ class CoreContext(
}
}
override fun onAuthenticationRequested(core: Core, authInfo: AuthInfo, method: AuthMethod) {
Log.w(
"[Context] Authentication requested for account [${authInfo.username}@${authInfo.domain}] with realm [${authInfo.realm}] using method [$method]"
)
authenticationRequestedEvent.value = Event(authInfo)
}
override fun onPushNotificationReceived(core: Core, payload: String?) {
Log.i("[Context] Push notification received: $payload")
}