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 46ebbb7b7171f7881b1b87e300b58124e74d8017..ec0f01f335e9cea12211ce14173d3d29e8358791 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 45adac6c2691bd9d8c2f47abe681f6e315dc392c..c4dbdf262fd3a5b8adc0cf0ef3a406ceae7fbfda 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 )