Code cleanup, restore comment, and fix regression on delay

This commit is contained in:
Benoit Marty 2019-11-25 14:11:38 +01:00
parent 9d0188cbf1
commit f84ec08847
4 changed files with 21 additions and 15 deletions

View file

@ -31,11 +31,11 @@ import im.vector.matrix.android.internal.auth.data.LoginFlowResponse
import im.vector.matrix.android.internal.auth.login.DefaultLoginWizard
import im.vector.matrix.android.internal.auth.registration.DefaultRegistrationWizard
import im.vector.matrix.android.internal.di.Unauthenticated
import im.vector.matrix.android.internal.extensions.foldToCallback
import im.vector.matrix.android.internal.network.RetrofitFactory
import im.vector.matrix.android.internal.network.executeRequest
import im.vector.matrix.android.internal.util.CancelableCoroutine
import im.vector.matrix.android.internal.task.launchToCallback
import im.vector.matrix.android.internal.util.MatrixCoroutineDispatchers
import im.vector.matrix.android.internal.util.toCancelable
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
@ -70,7 +70,7 @@ internal class DefaultAuthenticationService @Inject constructor(@Unauthenticated
override fun getLoginFlow(homeServerConnectionConfig: HomeServerConnectionConfig, callback: MatrixCallback<LoginFlowResponse>): Cancelable {
currentHomeServerConnectionConfig = null
val job = GlobalScope.launch(coroutineDispatchers.main) {
return GlobalScope.launch(coroutineDispatchers.main) {
val result = runCatching {
getLoginFlowInternal(homeServerConnectionConfig)
}
@ -85,7 +85,7 @@ internal class DefaultAuthenticationService @Inject constructor(@Unauthenticated
}
)
}
return CancelableCoroutine(job)
.toCancelable()
}
private suspend fun getLoginFlowInternal(homeServerConnectionConfig: HomeServerConnectionConfig) = withContext(coroutineDispatchers.io) {
@ -126,13 +126,9 @@ internal class DefaultAuthenticationService @Inject constructor(@Unauthenticated
override fun createSessionFromSso(homeServerConnectionConfig: HomeServerConnectionConfig,
credentials: Credentials,
callback: MatrixCallback<Session>): Cancelable {
val job = GlobalScope.launch(coroutineDispatchers.main) {
val sessionOrFailure = runCatching {
createSessionFromSso(credentials, homeServerConnectionConfig)
}
sessionOrFailure.foldToCallback(callback)
return GlobalScope.launchToCallback(coroutineDispatchers.main, callback) {
createSessionFromSso(credentials, homeServerConnectionConfig)
}
return CancelableCoroutine(job)
}
private suspend fun createSessionFromSso(credentials: Credentials,

View file

@ -34,7 +34,8 @@ import im.vector.matrix.android.internal.auth.data.LoginFlowTypes
import im.vector.matrix.android.internal.network.RetrofitFactory
import im.vector.matrix.android.internal.task.launchToCallback
import im.vector.matrix.android.internal.util.MatrixCoroutineDispatchers
import kotlinx.coroutines.*
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.delay
import okhttp3.OkHttpClient
import java.util.*
@ -160,6 +161,7 @@ internal class DefaultRegistrationWizard(private val homeServerConnectionConfig:
)
// Store data
currentThreePidData = ThreePidData(threePid, response, params)
// and send the sid a first time
return performRegistrationRequest(params)
}
@ -169,7 +171,7 @@ internal class DefaultRegistrationWizard(private val homeServerConnectionConfig:
return NoOpCancellable
}
return GlobalScope.launchToCallback(coroutineDispatchers.main, callback) {
performRegistrationRequest(safeParam)
performRegistrationRequest(safeParam, delayMillis)
}
}
@ -190,9 +192,12 @@ internal class DefaultRegistrationWizard(private val homeServerConnectionConfig:
)
val validationResponse = validateCodeTask.execute(ValidateCodeTask.Params(url, validationBody))
if (validationResponse.success == true) {
// The entered code is correct
// Same than validate email
return performRegistrationRequest(registrationParams, 3_000)
} else {
throw Failure.SuccessError
// The code is not correct
throw Failure.SuccessError
}
}

View file

@ -20,7 +20,9 @@ import im.vector.matrix.android.api.MatrixCallback
import im.vector.matrix.android.api.util.Cancelable
import im.vector.matrix.android.internal.extensions.foldToCallback
import im.vector.matrix.android.internal.util.toCancelable
import kotlinx.coroutines.*
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.CoroutineStart
import kotlinx.coroutines.launch
import kotlin.coroutines.CoroutineContext
import kotlin.coroutines.EmptyCoroutineContext

View file

@ -23,7 +23,10 @@ internal fun Job.toCancelable(): Cancelable {
return CancelableCoroutine(this)
}
internal class CancelableCoroutine(private val job: Job) : Cancelable {
/**
* Private, use the extension above
*/
private class CancelableCoroutine(private val job: Job) : Cancelable {
override fun cancel() {
if (!job.isCancelled) {