From aedd1a25772356077ddfc8b4ae6ed7099fa449c6 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 19 Feb 2024 09:41:16 +0100 Subject: [PATCH] Fixed issue with account login --- .../ui/assistant/fragment/LandingFragment.kt | 13 ++++++------- .../viewmodel/AccountLoginViewModel.kt | 14 ++++++++++++-- .../ui/assistant/viewmodel/LandingViewModel.kt | 18 +++++++++++------- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/assistant/fragment/LandingFragment.kt b/app/src/main/java/org/linphone/ui/assistant/fragment/LandingFragment.kt index d2b2dc226..15bbfb4fe 100644 --- a/app/src/main/java/org/linphone/ui/assistant/fragment/LandingFragment.kt +++ b/app/src/main/java/org/linphone/ui/assistant/fragment/LandingFragment.kt @@ -92,25 +92,24 @@ class LandingFragment : Fragment() { } viewModel.redirectToDigestAuthEvent.observe(viewLifecycleOwner) { - it.consume { - goToLoginFragment() + it.consume { address -> + goToLoginFragment(address) } } viewModel.redirectToSingleSignOnEvent.observe(viewLifecycleOwner) { - it.consume { - goToSingleSignOnActivity() + it.consume { address -> + goToSingleSignOnActivity(address) } } } - private fun goToLoginFragment() { - val identity = viewModel.sipIdentity.value.orEmpty() + private fun goToLoginFragment(identity: String) { val action = LandingFragmentDirections.actionLandingFragmentToLoginFragment(identity) findNavController().navigate(action) } - private fun goToSingleSignOnActivity() { + private fun goToSingleSignOnActivity(identity: String) { startActivity(Intent(requireContext(), OpenIdActivity::class.java)) requireActivity().finish() } diff --git a/app/src/main/java/org/linphone/ui/assistant/viewmodel/AccountLoginViewModel.kt b/app/src/main/java/org/linphone/ui/assistant/viewmodel/AccountLoginViewModel.kt index cb93e9e30..07c772320 100644 --- a/app/src/main/java/org/linphone/ui/assistant/viewmodel/AccountLoginViewModel.kt +++ b/app/src/main/java/org/linphone/ui/assistant/viewmodel/AccountLoginViewModel.kt @@ -134,10 +134,20 @@ class AccountLoginViewModel @UiThread constructor() : ViewModel() { val identity = sipIdentity.value.orEmpty().trim() val identityAddress = core.interpretUrl(identity, false) - identityAddress ?: return@postOnCoreThread + if (identityAddress == null) { + Log.e("$TAG Can't parse [$identity] as Address!") + // TODO: show error + return@postOnCoreThread + } val user = identityAddress.username - user ?: return@postOnCoreThread + if (user == null) { + Log.e( + "$TAG Address [${identityAddress.asStringUriOnly()}] doesn't contains an username!" + ) + // TODO: show error + return@postOnCoreThread + } val domain = identityAddress.domain diff --git a/app/src/main/java/org/linphone/ui/assistant/viewmodel/LandingViewModel.kt b/app/src/main/java/org/linphone/ui/assistant/viewmodel/LandingViewModel.kt index 4e70cf455..ef0e003f6 100644 --- a/app/src/main/java/org/linphone/ui/assistant/viewmodel/LandingViewModel.kt +++ b/app/src/main/java/org/linphone/ui/assistant/viewmodel/LandingViewModel.kt @@ -25,6 +25,7 @@ import androidx.lifecycle.ViewModel import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.core.Factory +import org.linphone.core.tools.Log import org.linphone.utils.Event class LandingViewModel @UiThread constructor() : ViewModel() { @@ -36,12 +37,12 @@ class LandingViewModel @UiThread constructor() : ViewModel() { val sipIdentity = MutableLiveData() - val redirectToDigestAuthEvent: MutableLiveData> by lazy { - MutableLiveData>() + val redirectToDigestAuthEvent: MutableLiveData> by lazy { + MutableLiveData>() } - val redirectToSingleSignOnEvent: MutableLiveData> by lazy { - MutableLiveData>() + val redirectToSingleSignOnEvent: MutableLiveData> by lazy { + MutableLiveData>() } var conditionsAndPrivacyPolicyAccepted = false @@ -56,7 +57,7 @@ class LandingViewModel @UiThread constructor() : ViewModel() { @UiThread fun login() { - coreContext.postOnCoreThread { core -> + coreContext.postOnCoreThread { var identity = sipIdentity.value.orEmpty() if (!identity.startsWith("sip:")) { identity = "sip:$identity" @@ -67,14 +68,17 @@ class LandingViewModel @UiThread constructor() : ViewModel() { val identityAddress = Factory.instance().createAddress(identity) if (identityAddress == null) { // TODO: FIXME: show error + Log.e("$TAG Can't parse [$identity] as Address!") return@postOnCoreThread } // TODO: SSO or password auth? if (identityAddress.domain == corePreferences.defaultDomain) { - redirectToDigestAuthEvent.postValue(Event(true)) + Log.i("$TAG Address matches default domain, using digest authentication") + redirectToDigestAuthEvent.postValue(Event(identityAddress.asStringUriOnly())) } else { - redirectToSingleSignOnEvent.postValue(Event(true)) + Log.i("$TAG Address doesn't match default domain, using Single Sign On") + redirectToSingleSignOnEvent.postValue(Event(identityAddress.asStringUriOnly())) } } }