Skip to content
Snippets Groups Projects
Commit 89a4b61a authored by Taras's avatar Taras
Browse files

Implement DefaultRegistrationWizard

parent 676c57d3
No related branches found
No related tags found
No related merge requests found
...@@ -24,6 +24,7 @@ import org.matrix.android.sdk.api.auth.registration.RegisterThreePid ...@@ -24,6 +24,7 @@ import org.matrix.android.sdk.api.auth.registration.RegisterThreePid
import org.matrix.android.sdk.api.auth.registration.RegistrationAvailability import org.matrix.android.sdk.api.auth.registration.RegistrationAvailability
import org.matrix.android.sdk.api.auth.registration.RegistrationResult import org.matrix.android.sdk.api.auth.registration.RegistrationResult
import org.matrix.android.sdk.api.auth.registration.RegistrationWizard import org.matrix.android.sdk.api.auth.registration.RegistrationWizard
import org.matrix.android.sdk.api.auth.registration.Stage
import org.matrix.android.sdk.api.auth.registration.toFlowResult import org.matrix.android.sdk.api.auth.registration.toFlowResult
import org.matrix.android.sdk.api.failure.Failure import org.matrix.android.sdk.api.failure.Failure
import org.matrix.android.sdk.api.failure.Failure.RegistrationFlowError import org.matrix.android.sdk.api.failure.Failure.RegistrationFlowError
...@@ -32,6 +33,7 @@ import org.matrix.android.sdk.internal.auth.AuthAPI ...@@ -32,6 +33,7 @@ import org.matrix.android.sdk.internal.auth.AuthAPI
import org.matrix.android.sdk.internal.auth.PendingSessionStore import org.matrix.android.sdk.internal.auth.PendingSessionStore
import org.matrix.android.sdk.internal.auth.SessionCreator import org.matrix.android.sdk.internal.auth.SessionCreator
import org.matrix.android.sdk.internal.auth.db.PendingSessionData import org.matrix.android.sdk.internal.auth.db.PendingSessionData
import org.matrix.android.sdk.internal.auth.toFlowsWithStages
/** /**
* This class execute the registration request and is responsible to keep the session of interactive authentication. * This class execute the registration request and is responsible to keep the session of interactive authentication.
...@@ -196,7 +198,8 @@ internal class DefaultRegistrationWizard( ...@@ -196,7 +198,8 @@ internal class DefaultRegistrationWizard(
} }
override suspend fun registrationCustom( override suspend fun registrationCustom(
authParams: JsonDict authParams: JsonDict,
initialDeviceDisplayName: String?
): RegistrationResult { ): RegistrationResult {
val safeSession = pendingSessionData.currentSession val safeSession = pendingSessionData.currentSession
?: throw IllegalStateException("developer error, call createAccount() method first") ?: throw IllegalStateException("developer error, call createAccount() method first")
...@@ -204,7 +207,7 @@ internal class DefaultRegistrationWizard( ...@@ -204,7 +207,7 @@ internal class DefaultRegistrationWizard(
val mutableParams = authParams.toMutableMap() val mutableParams = authParams.toMutableMap()
mutableParams["session"] = safeSession mutableParams["session"] = safeSession
val params = RegistrationCustomParams(auth = mutableParams) val params = RegistrationCustomParams(auth = mutableParams, initialDeviceDisplayName = initialDeviceDisplayName)
return performRegistrationOtherRequest(LoginType.CUSTOM, params) return performRegistrationOtherRequest(LoginType.CUSTOM, params)
} }
...@@ -248,4 +251,22 @@ internal class DefaultRegistrationWizard( ...@@ -248,4 +251,22 @@ internal class DefaultRegistrationWizard(
override suspend fun registrationAvailable(userName: String): RegistrationAvailability { override suspend fun registrationAvailable(userName: String): RegistrationAvailability {
return registerAvailableTask.execute(RegisterAvailableTask.Params(userName)) return registerAvailableTask.execute(RegisterAvailableTask.Params(userName))
} }
}
//Added to support few registration flows
override suspend fun getAllRegistrationFlows(): List<List<Stage>> {
try {
registerTask.execute(RegisterTask.Params(RegistrationParams()))
} catch (exception: Throwable) {
return if (exception is RegistrationFlowError) {
pendingSessionData =
pendingSessionData.copy(currentSession = exception.registrationFlowResponse.session)
.also { pendingSessionStore.savePendingSessionData(it) }
exception.registrationFlowResponse.toFlowsWithStages()
} else {
emptyList()
}
}
return emptyList()
}
}
\ No newline at end of file
...@@ -28,4 +28,8 @@ internal data class RegistrationCustomParams( ...@@ -28,4 +28,8 @@ internal data class RegistrationCustomParams(
// authentication parameters // authentication parameters
@Json(name = "auth") @Json(name = "auth")
val auth: JsonDict? = null, val auth: JsonDict? = null,
// device name
@Json(name = "initial_device_display_name")
val initialDeviceDisplayName: String? = null
) )
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment