From 89a4b61af84e6fbd0c855466cbced67a816f14f8 Mon Sep 17 00:00:00 2001 From: Taras Smakula <tarassmakula@gmail.com> Date: Wed, 1 Nov 2023 16:28:15 +0200 Subject: [PATCH] Implement DefaultRegistrationWizard --- .../registration/DefaultRegistrationWizard.kt | 27 ++++++++++++++++--- .../registration/RegistrationCustomParams.kt | 4 +++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/DefaultRegistrationWizard.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/DefaultRegistrationWizard.kt index 46ebbb7b..ec0f01f3 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/DefaultRegistrationWizard.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/DefaultRegistrationWizard.kt @@ -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.RegistrationResult 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.failure.Failure import org.matrix.android.sdk.api.failure.Failure.RegistrationFlowError @@ -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.SessionCreator 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. @@ -196,7 +198,8 @@ internal class DefaultRegistrationWizard( } override suspend fun registrationCustom( - authParams: JsonDict + authParams: JsonDict, + initialDeviceDisplayName: String? ): RegistrationResult { val safeSession = pendingSessionData.currentSession ?: throw IllegalStateException("developer error, call createAccount() method first") @@ -204,7 +207,7 @@ internal class DefaultRegistrationWizard( val mutableParams = authParams.toMutableMap() mutableParams["session"] = safeSession - val params = RegistrationCustomParams(auth = mutableParams) + val params = RegistrationCustomParams(auth = mutableParams, initialDeviceDisplayName = initialDeviceDisplayName) return performRegistrationOtherRequest(LoginType.CUSTOM, params) } @@ -248,4 +251,22 @@ internal class DefaultRegistrationWizard( override suspend fun registrationAvailable(userName: String): RegistrationAvailability { 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 diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/RegistrationCustomParams.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/RegistrationCustomParams.kt index 45adac6c..c4dbdf26 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/RegistrationCustomParams.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/RegistrationCustomParams.kt @@ -28,4 +28,8 @@ internal data class RegistrationCustomParams( // authentication parameters @Json(name = "auth") val auth: JsonDict? = null, + + // device name + @Json(name = "initial_device_display_name") + val initialDeviceDisplayName: String? = null ) -- GitLab