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>
This commit is contained in:
Daniel Calviño Sánchez 2024-08-28 08:16:09 +02:00 committed by Marcel Hibbe
parent 327d1f7478
commit 6706bc2790
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
5 changed files with 65 additions and 4 deletions

View File

@ -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

View File

@ -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)
}

View File

@ -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)
}

View File

@ -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)
}

View File

@ -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)
}