From 6706bc2790fb11b1f3c8d9dfd42e5f587d49b4e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Wed, 28 Aug 2024 08:16:09 +0200 Subject: [PATCH] Store federation properties in signaling settings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .../nextcloud/talk/activities/CallActivity.kt | 2 ++ .../talk/models/ExternalSignalingServer.kt | 7 +++-- .../settings/FederationHelloAuthParams.kt | 24 +++++++++++++++ .../signaling/settings/FederationSettings.kt | 30 +++++++++++++++++++ .../signaling/settings/SignalingSettings.kt | 6 ++-- 5 files changed, 65 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/FederationHelloAuthParams.kt create mode 100644 app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/FederationSettings.kt diff --git a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt index f0b746be0..21696470a 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt +++ b/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 diff --git a/app/src/main/java/com/nextcloud/talk/models/ExternalSignalingServer.kt b/app/src/main/java/com/nextcloud/talk/models/ExternalSignalingServer.kt index 9ed3f7b4d..b561f9bde 100644 --- a/app/src/main/java/com/nextcloud/talk/models/ExternalSignalingServer.kt +++ b/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) } diff --git a/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/FederationHelloAuthParams.kt b/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/FederationHelloAuthParams.kt new file mode 100644 index 000000000..396ab7f2d --- /dev/null +++ b/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 + * 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) +} diff --git a/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/FederationSettings.kt b/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/FederationSettings.kt new file mode 100644 index 000000000..27c29364c --- /dev/null +++ b/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 + * 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) +} diff --git a/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/SignalingSettings.kt b/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/SignalingSettings.kt index 55d50664e..89dc837a5 100644 --- a/app/src/main/java/com/nextcloud/talk/models/json/signaling/settings/SignalingSettings.kt +++ b/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) }