Browse Source

Store federation properties in signaling settings

Starting with Talk 20 the signaling settings include a "federation"
property that provide the values needed to join a federated room in the
external signaling settings. The "federation" property is specific to
each conversation, and it will be returned although empty for
non-federated conversations.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Daniel Calviño Sánchez 9 months ago
parent
commit
6706bc2790

+ 2 - 0
app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt

@@ -1475,6 +1475,8 @@ class CallActivity : CallBaseActivity() {
                                 signalingSettingsOverall.ocs!!.settings!!.externalSignalingServer
                             externalSignalingServer!!.externalSignalingTicket =
                                 signalingSettingsOverall.ocs!!.settings!!.externalSignalingTicket
+                            externalSignalingServer!!.federation =
+                                signalingSettingsOverall.ocs!!.settings!!.federation
                             hasExternalSignalingServer = true
                         } else {
                             hasExternalSignalingServer = false

+ 5 - 2
app/src/main/java/com/nextcloud/talk/models/ExternalSignalingServer.kt

@@ -10,6 +10,7 @@ package com.nextcloud.talk.models
 import android.os.Parcelable
 import com.bluelinelabs.logansquare.annotation.JsonField
 import com.bluelinelabs.logansquare.annotation.JsonObject
+import com.nextcloud.talk.models.json.signaling.settings.FederationSettings
 import kotlinx.parcelize.Parcelize
 
 @Parcelize
@@ -18,8 +19,10 @@ data class ExternalSignalingServer(
     @JsonField(name = ["externalSignalingServer"])
     var externalSignalingServer: String? = null,
     @JsonField(name = ["externalSignalingTicket"])
-    var externalSignalingTicket: String? = null
+    var externalSignalingTicket: String? = null,
+    @JsonField(name = ["federation"])
+    var federation: FederationSettings? = null
 ) : Parcelable {
     // This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
-    constructor() : this(null, null)
+    constructor() : this(null, null, null)
 }

+ 24 - 0
app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/FederationHelloAuthParams.kt

@@ -0,0 +1,24 @@
+/*
+ * Nextcloud Talk - Android Client
+ *
+ * SPDX-FileCopyrightText: 2024 Daniel Calviño Sánchez <danxuliu@gmail.com>
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+package com.nextcloud.talk.models.json.signaling.settings
+
+import android.os.Parcelable
+import com.bluelinelabs.logansquare.annotation.JsonField
+import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.parcelize.Parcelize
+import kotlinx.serialization.Serializable
+
+@Parcelize
+@JsonObject
+@Serializable
+data class FederationHelloAuthParams(
+    @JsonField(name = ["token"])
+    var token: String? = null,
+) : Parcelable {
+    // This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
+    constructor() : this(null)
+}

+ 30 - 0
app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/FederationSettings.kt

@@ -0,0 +1,30 @@
+/*
+ * Nextcloud Talk - Android Client
+ *
+ * SPDX-FileCopyrightText: 2024 Daniel Calviño Sánchez <danxuliu@gmail.com>
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+package com.nextcloud.talk.models.json.signaling.settings
+
+import android.os.Parcelable
+import com.bluelinelabs.logansquare.annotation.JsonField
+import com.bluelinelabs.logansquare.annotation.JsonObject
+import kotlinx.parcelize.Parcelize
+import kotlinx.serialization.Serializable
+
+@Parcelize
+@JsonObject
+@Serializable
+data class FederationSettings(
+    @JsonField(name = ["server"])
+    var server: String? = null,
+    @JsonField(name = ["nextcloudServer"])
+    var nextcloudServer: String? = null,
+    @JsonField(name = ["helloAuthParams"])
+    var helloAuthParams: FederationHelloAuthParams? = null,
+    @JsonField(name = ["roomId"])
+    var roomId: String? = null
+) : Parcelable {
+    // This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
+    constructor() : this(null, null, null, null)
+}

+ 4 - 2
app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/SignalingSettings.kt

@@ -24,8 +24,10 @@ data class SignalingSettings(
     @JsonField(name = ["server"])
     var externalSignalingServer: String? = null,
     @JsonField(name = ["ticket"])
-    var externalSignalingTicket: String? = null
+    var externalSignalingTicket: String? = null,
+    @JsonField(name = ["federation"])
+    var federation: FederationSettings? = null
 ) : Parcelable {
     // This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
-    constructor() : this(null, null, null)
+    constructor() : this(null, null, null, null)
 }