Login screens: reset password: display a warning when the process is not finished
This commit is contained in:
parent
f87526e615
commit
71ae3c4a8c
@ -80,23 +80,40 @@ abstract class AbstractLoginFragment : VectorBaseFragment(), OnBackPressed {
|
|||||||
abstract fun onRegistrationError(throwable: Throwable)
|
abstract fun onRegistrationError(throwable: Throwable)
|
||||||
|
|
||||||
override fun onBackPressed(toolbarButton: Boolean): Boolean {
|
override fun onBackPressed(toolbarButton: Boolean): Boolean {
|
||||||
if (loginViewModel.isPasswordSent) {
|
return when {
|
||||||
// Ask for confirmation before cancelling the registration
|
loginViewModel.isRegistrationStarted -> {
|
||||||
AlertDialog.Builder(requireActivity())
|
// Ask for confirmation before cancelling the registration
|
||||||
.setTitle(R.string.login_signup_cancel_confirmation_title)
|
AlertDialog.Builder(requireActivity())
|
||||||
.setMessage(R.string.login_signup_cancel_confirmation_content)
|
.setTitle(R.string.login_signup_cancel_confirmation_title)
|
||||||
.setPositiveButton(R.string.login_signup_cancel_confirmation_yes) { _, _ ->
|
.setMessage(R.string.login_signup_cancel_confirmation_content)
|
||||||
resetViewModel()
|
.setPositiveButton(R.string.yes) { _, _ ->
|
||||||
vectorBaseActivity.onBackPressed()
|
resetViewModel()
|
||||||
}
|
vectorBaseActivity.onBackPressed()
|
||||||
.setNegativeButton(R.string.login_signup_cancel_confirmation_no, null)
|
}
|
||||||
.show()
|
.setNegativeButton(R.string.no, null)
|
||||||
|
.show()
|
||||||
|
|
||||||
return true
|
true
|
||||||
} else {
|
}
|
||||||
resetViewModel()
|
loginViewModel.isResetPasswordStarted -> {
|
||||||
// Do not consume the Back event
|
// Ask for confirmation before cancelling the reset password
|
||||||
return false
|
AlertDialog.Builder(requireActivity())
|
||||||
|
.setTitle(R.string.login_reset_password_cancel_confirmation_title)
|
||||||
|
.setMessage(R.string.login_reset_password_cancel_confirmation_content)
|
||||||
|
.setPositiveButton(R.string.yes) { _, _ ->
|
||||||
|
resetViewModel()
|
||||||
|
vectorBaseActivity.onBackPressed()
|
||||||
|
}
|
||||||
|
.setNegativeButton(R.string.no, null)
|
||||||
|
.show()
|
||||||
|
|
||||||
|
true
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
resetViewModel()
|
||||||
|
// Do not consume the Back event
|
||||||
|
false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ class LoginActivity : VectorBaseActivity(), ToolbarConfigurable {
|
|||||||
onRegistrationStageNotSupported()
|
onRegistrationStageNotSupported()
|
||||||
} else {
|
} else {
|
||||||
// Go on with registration flow
|
// Go on with registration flow
|
||||||
if (loginViewModel.isPasswordSent) {
|
if (loginViewModel.isRegistrationStarted) {
|
||||||
handleRegistrationNavigation(loginViewEvents.flowResult)
|
handleRegistrationNavigation(loginViewEvents.flowResult)
|
||||||
} else {
|
} else {
|
||||||
// First ask for login and password
|
// First ask for login and password
|
||||||
|
@ -69,9 +69,14 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi
|
|||||||
val currentThreePid: String?
|
val currentThreePid: String?
|
||||||
get() = registrationWizard?.currentThreePid
|
get() = registrationWizard?.currentThreePid
|
||||||
|
|
||||||
var isPasswordSent: Boolean = false
|
// True when login and password are sent with success to the homeserver
|
||||||
|
var isRegistrationStarted: Boolean = false
|
||||||
private set
|
private set
|
||||||
|
|
||||||
|
// True when email is sent with success to the homeserver
|
||||||
|
val isResetPasswordStarted: Boolean
|
||||||
|
get() = resetPasswordEmail.isNullOrBlank().not()
|
||||||
|
|
||||||
private var registrationWizard: RegistrationWizard? = null
|
private var registrationWizard: RegistrationWizard? = null
|
||||||
private var loginWizard: LoginWizard? = null
|
private var loginWizard: LoginWizard? = null
|
||||||
|
|
||||||
@ -232,7 +237,7 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi
|
|||||||
action.initialDeviceName,
|
action.initialDeviceName,
|
||||||
object : MatrixCallbackDelegate<RegistrationResult>(registrationCallback) {
|
object : MatrixCallbackDelegate<RegistrationResult>(registrationCallback) {
|
||||||
override fun onSuccess(data: RegistrationResult) {
|
override fun onSuccess(data: RegistrationResult) {
|
||||||
isPasswordSent = true
|
isRegistrationStarted = true
|
||||||
// Not sure that this will work:
|
// Not sure that this will work:
|
||||||
// super.onSuccess(data)
|
// super.onSuccess(data)
|
||||||
registrationCallback.onSuccess(data)
|
registrationCallback.onSuccess(data)
|
||||||
@ -252,7 +257,7 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi
|
|||||||
|
|
||||||
when (action) {
|
when (action) {
|
||||||
LoginAction.ResetLogin -> {
|
LoginAction.ResetLogin -> {
|
||||||
isPasswordSent = false
|
isRegistrationStarted = false
|
||||||
|
|
||||||
setState {
|
setState {
|
||||||
copy(
|
copy(
|
||||||
@ -323,8 +328,6 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
resetPasswordEmail = action.email
|
|
||||||
|
|
||||||
setState {
|
setState {
|
||||||
copy(
|
copy(
|
||||||
asyncResetPassword = Loading()
|
asyncResetPassword = Loading()
|
||||||
@ -333,6 +336,8 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi
|
|||||||
|
|
||||||
currentTask = safeLoginWizard.resetPassword(action.email, action.newPassword, object : MatrixCallback<Unit> {
|
currentTask = safeLoginWizard.resetPassword(action.email, action.newPassword, object : MatrixCallback<Unit> {
|
||||||
override fun onSuccess(data: Unit) {
|
override fun onSuccess(data: Unit) {
|
||||||
|
resetPasswordEmail = action.email
|
||||||
|
|
||||||
setState {
|
setState {
|
||||||
copy(
|
copy(
|
||||||
asyncResetPassword = Success(data)
|
asyncResetPassword = Success(data)
|
||||||
@ -370,6 +375,8 @@ class LoginViewModel @AssistedInject constructor(@Assisted initialState: LoginVi
|
|||||||
|
|
||||||
currentTask = safeLoginWizard.resetPasswordMailConfirmed(object : MatrixCallback<Unit> {
|
currentTask = safeLoginWizard.resetPasswordMailConfirmed(object : MatrixCallback<Unit> {
|
||||||
override fun onSuccess(data: Unit) {
|
override fun onSuccess(data: Unit) {
|
||||||
|
resetPasswordEmail = null
|
||||||
|
|
||||||
setState {
|
setState {
|
||||||
copy(
|
copy(
|
||||||
asyncResetMailConfirmed = Success(data)
|
asyncResetMailConfirmed = Success(data)
|
||||||
|
@ -84,6 +84,9 @@
|
|||||||
<string name="login_reset_password_success_notice_2">You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device.</string>
|
<string name="login_reset_password_success_notice_2">You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device.</string>
|
||||||
<string name="login_reset_password_success_submit">Back to Sign In</string>
|
<string name="login_reset_password_success_submit">Back to Sign In</string>
|
||||||
|
|
||||||
|
<string name="login_reset_password_cancel_confirmation_title">Warning</string>
|
||||||
|
<string name="login_reset_password_cancel_confirmation_content">Your password is not yet changed.\n\nStop the password change process?</string>
|
||||||
|
|
||||||
<string name="login_set_email_title">Set email address</string>
|
<string name="login_set_email_title">Set email address</string>
|
||||||
<string name="login_set_email_notice">Set an email to recover your account. Later, you can optionally allow people you know to discover you by your email.</string>
|
<string name="login_set_email_notice">Set an email to recover your account. Later, you can optionally allow people you know to discover you by your email.</string>
|
||||||
<string name="login_set_email_mandatory_hint">Email</string>
|
<string name="login_set_email_mandatory_hint">Email</string>
|
||||||
@ -115,8 +118,6 @@
|
|||||||
<string name="login_signup_error_user_in_use">That username is taken</string>
|
<string name="login_signup_error_user_in_use">That username is taken</string>
|
||||||
<string name="login_signup_cancel_confirmation_title">Warning</string>
|
<string name="login_signup_cancel_confirmation_title">Warning</string>
|
||||||
<string name="login_signup_cancel_confirmation_content">Your account is not created yet.\n\nStop the registration process?</string>
|
<string name="login_signup_cancel_confirmation_content">Your account is not created yet.\n\nStop the registration process?</string>
|
||||||
<string name="login_signup_cancel_confirmation_yes">Yes</string>
|
|
||||||
<string name="login_signup_cancel_confirmation_no">No</string>
|
|
||||||
|
|
||||||
<string name="login_a11y_choose_matrix_org">Select matrix.org</string>
|
<string name="login_a11y_choose_matrix_org">Select matrix.org</string>
|
||||||
<string name="login_a11y_choose_modular">Select modular</string>
|
<string name="login_a11y_choose_modular">Select modular</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user