From da4bf24598d0cdf19d565bb7019b39f527fc89eb Mon Sep 17 00:00:00 2001
From: Taras <tarassmakula@gmail.com>
Date: Thu, 29 Sep 2022 19:51:18 +0300
Subject: [PATCH] Add registrationSwiclops

---
 .../auth/registration/RegistrationWizard.kt    |  6 ++++++
 .../registration/DefaultRegistrationWizard.kt  | 18 ++++++++++++++++++
 .../registration/RegistrationCustomParams.kt   |  8 ++++++++
 3 files changed, 32 insertions(+)

diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationWizard.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationWizard.kt
index 30ef23fa..a8111915 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationWizard.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationWizard.kt
@@ -128,4 +128,10 @@ interface RegistrationWizard {
 
     //Added to support few registration flows
     suspend fun getAllRegistrationFlows(): List<List<Stage>>
+
+    //Added to support custom Swiclops registration
+    suspend fun registrationSwiclops(
+            authParams: JsonDict,
+            userName: String?,
+            initialDeviceDisplayName: String?): RegistrationResult
 }
\ No newline at end of file
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 3077f895..63bf1b0a 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
@@ -304,4 +304,22 @@ internal class DefaultRegistrationWizard(
         LoginFlowTypes.MSISDN         -> firstOrNull { it is Stage.Msisdn }
         else                          -> firstOrNull { (it as? Stage.Other)?.type == type }
     }
+
+    override suspend fun registrationSwiclops(
+            authParams: JsonDict,
+            userName: String?,
+            initialDeviceDisplayName: String?): RegistrationResult {
+        val safeSession = pendingSessionData.currentSession
+                ?: throw IllegalStateException("developer error, call createAccount() method first")
+
+        val mutableParams = authParams.toMutableMap()
+        mutableParams["session"] = safeSession
+
+        val params = RegistrationCustomParams(
+                auth = mutableParams,
+                username = userName,
+                initialDeviceDisplayName = initialDeviceDisplayName
+        )
+        return performRegistrationOtherRequest(LoginType.CUSTOM, params)
+    }
 }
\ 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..21aea43e 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,12 @@ internal data class RegistrationCustomParams(
         // authentication parameters
         @Json(name = "auth")
         val auth: JsonDict? = null,
+
+        // the account username
+        @Json(name = "username")
+        val username: String? = null,
+
+        // device name
+        @Json(name = "initial_device_display_name")
+        val initialDeviceDisplayName: String? = null,
 )
-- 
GitLab