From 8dc64facaa49b19a4d3e2f0e1e6f8d66e3d3a65c Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Wed, 15 Nov 2023 17:35:08 +0200
Subject: [PATCH] Add refresh token to register

---
 .../sdk/api/auth/registration/RegistrationWizard.kt    |  2 +-
 .../auth/registration/DefaultRegistrationWizard.kt     | 10 ++++++----
 .../auth/registration/RegistrationCustomParams.kt      |  5 ++++-
 3 files changed, 11 insertions(+), 6 deletions(-)

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 85600e27..1d67bdd2 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
@@ -82,7 +82,7 @@ interface RegistrationWizard {
      * Current registration "session" param will be included into authParams by default.
      * The authParams should contain at least one entry "type" with a String value.
      */
-    suspend fun registrationCustom(authParams: JsonDict, initialDeviceDisplayName: String? = null): RegistrationResult
+    suspend fun registrationCustom(authParams: JsonDict, initialDeviceDisplayName: String? = null, useRefreshToken: Boolean = false): RegistrationResult
 
     /**
      * Perform the "m.login.email.identity" or "m.login.msisdn" stage.
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 ec0f01f3..63e560a3 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
@@ -54,12 +54,13 @@ internal class DefaultRegistrationWizard(
 
     override fun getCurrentThreePid(): String? {
         return when (val threePid = pendingSessionData.currentThreePidData?.threePid) {
-            is RegisterThreePid.Email -> threePid.email
+            is RegisterThreePid.Email  -> threePid.email
             is RegisterThreePid.Msisdn -> {
                 // Take formatted msisdn if provided by the server
                 pendingSessionData.currentThreePidData?.addThreePidRegistrationResponse?.formattedMsisdn?.takeIf { it.isNotBlank() } ?: threePid.msisdn
             }
-            null -> null
+
+            null                       -> null
         }
     }
 
@@ -199,7 +200,8 @@ internal class DefaultRegistrationWizard(
 
     override suspend fun registrationCustom(
             authParams: JsonDict,
-            initialDeviceDisplayName: String?
+            initialDeviceDisplayName: String?,
+            useRefreshToken: Boolean
     ): RegistrationResult {
         val safeSession = pendingSessionData.currentSession
                 ?: throw IllegalStateException("developer error, call createAccount() method first")
@@ -207,7 +209,7 @@ internal class DefaultRegistrationWizard(
         val mutableParams = authParams.toMutableMap()
         mutableParams["session"] = safeSession
 
-        val params = RegistrationCustomParams(auth = mutableParams, initialDeviceDisplayName = initialDeviceDisplayName)
+        val params = RegistrationCustomParams(auth = mutableParams, initialDeviceDisplayName = initialDeviceDisplayName, refreshToken = useRefreshToken)
         return performRegistrationOtherRequest(LoginType.CUSTOM, params)
     }
 
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 c4dbdf26..036a7728 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
@@ -31,5 +31,8 @@ internal data class RegistrationCustomParams(
 
         // device name
         @Json(name = "initial_device_display_name")
-        val initialDeviceDisplayName: String? = null
+        val initialDeviceDisplayName: String? = null,
+
+        @Json(name = "refresh_token")
+        val refreshToken: Boolean = false
 )
-- 
GitLab