adding the logout all devices state to the reset state in preparation for the UI to take it into account
This commit is contained in:
parent
f21e30f7c7
commit
a2646c56cf
|
@ -60,6 +60,7 @@ import org.matrix.android.sdk.api.auth.login.LoginWizard
|
|||
import org.matrix.android.sdk.api.auth.registration.RegistrationWizard
|
||||
import org.matrix.android.sdk.api.failure.isHomeserverUnavailable
|
||||
import org.matrix.android.sdk.api.session.Session
|
||||
import org.matrix.android.sdk.internal.auth.login.ResetCapabilities
|
||||
import timber.log.Timber
|
||||
import java.util.UUID
|
||||
import java.util.concurrent.CancellationException
|
||||
|
@ -443,11 +444,11 @@ class OnboardingViewModel @AssistedInject constructor(
|
|||
setState { copy(isLoading = true) }
|
||||
currentJob = viewModelScope.launch {
|
||||
runCatching { safeLoginWizard.resetPassword(action.email) }.fold(
|
||||
onSuccess = {
|
||||
onSuccess = { resetCapabilities ->
|
||||
setState {
|
||||
copy(
|
||||
isLoading = false,
|
||||
resetState = ResetState(email = action.email, newPassword = action.newPassword)
|
||||
resetState = createResetState(action, resetCapabilities)
|
||||
)
|
||||
}
|
||||
_viewEvents.post(OnboardingViewEvents.OnResetPasswordSendThreePidDone)
|
||||
|
@ -460,6 +461,12 @@ class OnboardingViewModel @AssistedInject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
private fun createResetState(action: OnboardingAction.ResetPassword, it: ResetCapabilities) = ResetState(
|
||||
email = action.email,
|
||||
newPassword = action.newPassword,
|
||||
supportsLogoutAllDevices = it.supportsLogoutAllDevices
|
||||
)
|
||||
|
||||
private fun handleResetPasswordMailConfirmed() {
|
||||
setState { copy(isLoading = true) }
|
||||
currentJob = viewModelScope.launch {
|
||||
|
|
|
@ -87,7 +87,8 @@ data class PersonalizationState(
|
|||
@Parcelize
|
||||
data class ResetState(
|
||||
val email: String? = null,
|
||||
val newPassword: String? = null
|
||||
val newPassword: String? = null,
|
||||
val supportsLogoutAllDevices: Boolean = false
|
||||
) : Parcelable
|
||||
|
||||
@Parcelize
|
||||
|
|
|
@ -52,6 +52,7 @@ import org.matrix.android.sdk.api.auth.data.HomeServerConnectionConfig
|
|||
import org.matrix.android.sdk.api.auth.registration.Stage
|
||||
import org.matrix.android.sdk.api.session.Session
|
||||
import org.matrix.android.sdk.api.session.homeserver.HomeServerCapabilities
|
||||
import org.matrix.android.sdk.internal.auth.login.ResetCapabilities
|
||||
|
||||
private const val A_DISPLAY_NAME = "a display name"
|
||||
private const val A_PICTURE_FILENAME = "a-picture.png"
|
||||
|
@ -67,6 +68,7 @@ private val A_HOMESERVER_CONFIG = HomeServerConnectionConfig(FakeUri().instance)
|
|||
private val SELECTED_HOMESERVER_STATE = SelectedHomeserverState(preferredLoginMode = LoginMode.Password)
|
||||
private const val AN_EMAIL = "hello@example.com"
|
||||
private const val A_PASSWORD = "a-password"
|
||||
private val A_RESET_CAPABILITIES = ResetCapabilities(supportsLogoutAllDevices = true)
|
||||
|
||||
class OnboardingViewModelTest {
|
||||
|
||||
|
@ -479,7 +481,7 @@ class OnboardingViewModelTest {
|
|||
@Test
|
||||
fun `given can successfully reset password, when resetting password, then emits reset done event`() = runTest {
|
||||
val test = viewModel.test()
|
||||
fakeLoginWizard.givenResetPasswordSuccess(AN_EMAIL)
|
||||
fakeLoginWizard.givenResetPasswordSuccess(AN_EMAIL, A_RESET_CAPABILITIES)
|
||||
fakeAuthenticationService.givenLoginWizard(fakeLoginWizard)
|
||||
|
||||
viewModel.handle(OnboardingAction.ResetPassword(email = AN_EMAIL, newPassword = A_PASSWORD))
|
||||
|
@ -488,7 +490,10 @@ class OnboardingViewModelTest {
|
|||
.assertStatesChanges(
|
||||
initialState,
|
||||
{ copy(isLoading = true) },
|
||||
{ copy(isLoading = false, resetState = ResetState(AN_EMAIL, A_PASSWORD)) }
|
||||
{
|
||||
val resetState = ResetState(AN_EMAIL, A_PASSWORD, supportsLogoutAllDevices = A_RESET_CAPABILITIES.supportsLogoutAllDevices)
|
||||
copy(isLoading = false, resetState = resetState)
|
||||
}
|
||||
)
|
||||
.assertEvents(OnboardingViewEvents.OnResetPasswordSendThreePidDone)
|
||||
.finish()
|
||||
|
|
|
@ -16,14 +16,16 @@
|
|||
|
||||
package im.vector.app.test.fakes
|
||||
|
||||
import io.mockk.coEvery
|
||||
import io.mockk.coJustRun
|
||||
import io.mockk.mockk
|
||||
import org.matrix.android.sdk.api.auth.login.LoginWizard
|
||||
import org.matrix.android.sdk.internal.auth.login.ResetCapabilities
|
||||
|
||||
class FakeLoginWizard : LoginWizard by mockk() {
|
||||
|
||||
fun givenResetPasswordSuccess(email: String) {
|
||||
coJustRun { resetPassword(email) }
|
||||
fun givenResetPasswordSuccess(email: String, resetCapabilities: ResetCapabilities) {
|
||||
coEvery { resetPassword(email) } returns resetCapabilities
|
||||
}
|
||||
|
||||
fun givenConfirmResetPasswordSuccess(password: String) {
|
||||
|
|
Loading…
Reference in New Issue