diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/AccountLoginFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/AccountLoginFragment.kt
index 76d95ed48..7abb12dbd 100644
--- a/app/src/main/java/org/linphone/activities/assistant/fragments/AccountLoginFragment.kt
+++ b/app/src/main/java/org/linphone/activities/assistant/fragments/AccountLoginFragment.kt
@@ -20,6 +20,8 @@
package org.linphone.activities.assistant.fragments
import android.app.Dialog
+import android.content.Intent
+import android.net.Uri
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
@@ -74,6 +76,13 @@ class AccountLoginFragment : AbstractPhoneFragment() {
CountryPickerFragment(viewModel).show(childFragmentManager, "CountryPicker")
}
+ binding.setForgotPasswordClickListener {
+ val intent = Intent(Intent.ACTION_VIEW)
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ intent.data = Uri.parse(getString(R.string.assistant_forgotten_password_link))
+ startActivity(intent)
+ }
+
viewModel.goToSmsValidationEvent.observe(viewLifecycleOwner, Observer {
it.consume {
if (findNavController().currentDestination?.id == R.id.accountLoginFragment) {
@@ -102,9 +111,15 @@ class AccountLoginFragment : AbstractPhoneFragment() {
val dialogViewModel = DialogViewModel(getString(R.string.assistant_error_invalid_credentials))
val dialog: Dialog = DialogUtils.getDialog(requireContext(), dialogViewModel)
- dialogViewModel.showDeleteButton({
+ dialogViewModel.showCancelButton {
+ viewModel.removeInvalidProxyConfig()
dialog.dismiss()
- }, getString(R.string.dialog_ok))
+ }
+
+ dialogViewModel.showDeleteButton({
+ viewModel.continueEvenIfInvalidCredentials()
+ dialog.dismiss()
+ }, getString(R.string.assistant_continue_even_if_credentials_invalid))
dialog.show()
}
diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/GenericAccountLoginFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/GenericAccountLoginFragment.kt
index 78168d500..d2ebe0361 100644
--- a/app/src/main/java/org/linphone/activities/assistant/fragments/GenericAccountLoginFragment.kt
+++ b/app/src/main/java/org/linphone/activities/assistant/fragments/GenericAccountLoginFragment.kt
@@ -80,9 +80,15 @@ class GenericAccountLoginFragment : Fragment() {
val dialogViewModel = DialogViewModel(getString(R.string.assistant_error_invalid_credentials))
val dialog: Dialog = DialogUtils.getDialog(requireContext(), dialogViewModel)
- dialogViewModel.showDeleteButton({
+ dialogViewModel.showCancelButton {
+ viewModel.removeInvalidProxyConfig()
dialog.dismiss()
- }, getString(R.string.dialog_ok))
+ }
+
+ dialogViewModel.showDeleteButton({
+ viewModel.continueEvenIfInvalidCredentials()
+ dialog.dismiss()
+ }, getString(R.string.assistant_continue_even_if_credentials_invalid))
dialog.show()
}
diff --git a/app/src/main/java/org/linphone/activities/assistant/viewmodels/AccountLoginViewModel.kt b/app/src/main/java/org/linphone/activities/assistant/viewmodels/AccountLoginViewModel.kt
index 9f0b23650..b5f102991 100644
--- a/app/src/main/java/org/linphone/activities/assistant/viewmodels/AccountLoginViewModel.kt
+++ b/app/src/main/java/org/linphone/activities/assistant/viewmodels/AccountLoginViewModel.kt
@@ -91,10 +91,6 @@ class AccountLoginViewModel(accountCreator: AccountCreator) : AbstractPhoneViewM
core.removeListener(this)
} else if (state == RegistrationState.Failed) {
invalidCredentialsEvent.value = Event(true)
- val authInfo = cfg.findAuthInfo()
- if (authInfo != null) core.removeAuthInfo(authInfo)
- core.removeProxyConfig(cfg)
- proxyConfigToCheck = null
core.removeListener(this)
}
}
@@ -132,6 +128,19 @@ class AccountLoginViewModel(accountCreator: AccountCreator) : AbstractPhoneViewM
super.onCleared()
}
+ fun removeInvalidProxyConfig() {
+ val cfg = proxyConfigToCheck
+ cfg ?: return
+ val authInfo = cfg.findAuthInfo()
+ if (authInfo != null) coreContext.core.removeAuthInfo(authInfo)
+ coreContext.core.removeProxyConfig(cfg)
+ proxyConfigToCheck = null
+ }
+
+ fun continueEvenIfInvalidCredentials() {
+ leaveAssistantEvent.value = Event(true)
+ }
+
fun login() {
if (loginWithUsernamePassword.value == true) {
accountCreator.username = username.value
diff --git a/app/src/main/java/org/linphone/activities/assistant/viewmodels/GenericLoginViewModel.kt b/app/src/main/java/org/linphone/activities/assistant/viewmodels/GenericLoginViewModel.kt
index 6819fa9db..53741d087 100644
--- a/app/src/main/java/org/linphone/activities/assistant/viewmodels/GenericLoginViewModel.kt
+++ b/app/src/main/java/org/linphone/activities/assistant/viewmodels/GenericLoginViewModel.kt
@@ -75,10 +75,6 @@ class GenericLoginViewModel(private val accountCreator: AccountCreator) : ViewMo
core.removeListener(this)
} else if (state == RegistrationState.Failed) {
invalidCredentialsEvent.value = Event(true)
- val authInfo = cfg.findAuthInfo()
- if (authInfo != null) core.removeAuthInfo(authInfo)
- core.removeProxyConfig(cfg)
- proxyConfigToCheck = null
core.removeListener(this)
}
}
@@ -104,6 +100,19 @@ class GenericLoginViewModel(private val accountCreator: AccountCreator) : ViewMo
transport.value = transportType
}
+ fun removeInvalidProxyConfig() {
+ val cfg = proxyConfigToCheck
+ cfg ?: return
+ val authInfo = cfg.findAuthInfo()
+ if (authInfo != null) coreContext.core.removeAuthInfo(authInfo)
+ coreContext.core.removeProxyConfig(cfg)
+ proxyConfigToCheck = null
+ }
+
+ fun continueEvenIfInvalidCredentials() {
+ leaveAssistantEvent.value = Event(true)
+ }
+
fun createProxyConfig() {
waitForServerAnswer.value = true
coreContext.core.addListener(coreListener)
diff --git a/app/src/main/res/layout/assistant_account_login_fragment.xml b/app/src/main/res/layout/assistant_account_login_fragment.xml
index 3e7c07a4c..1bc9f5aff 100644
--- a/app/src/main/res/layout/assistant_account_login_fragment.xml
+++ b/app/src/main/res/layout/assistant_account_login_fragment.xml
@@ -11,6 +11,9 @@
+
@@ -219,6 +222,17 @@
android:hint="@string/password"
android:textColor="@color/black_color" />
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 294c00b02..9f84a262e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -266,9 +266,12 @@
Please confirm your country code and enter your phone number
Please enter your username and password of &appName; account
Use your username and password instead of your phone number
+ Forgot your password?
+ https://linphone.org/freesip/recover
Login
Finish configuration
Confirmation code
+ Continue
Use SIP account