From f1b6f52fde85ab665e10f48db474acc8047d1711 Mon Sep 17 00:00:00 2001 From: Doug Date: Wed, 27 Sep 2023 13:03:28 +0100 Subject: [PATCH] Allow the use of Jitsi for 1:1 calls via the client well-known. --- .../HomeserverConfigurationBuilder.swift | 5 ++++- .../HomeserverJitsiConfiguration.swift | 4 +++- Riot/Model/WellKnown/VectorWellKnown.swift | 3 ++- Riot/Modules/Room/RoomViewController.m | 8 ++++++-- changelog.d/7684.change | 1 + 5 files changed, 16 insertions(+), 5 deletions(-) create mode 100644 changelog.d/7684.change diff --git a/Riot/Model/HomeserverConfiguration/HomeserverConfigurationBuilder.swift b/Riot/Model/HomeserverConfiguration/HomeserverConfigurationBuilder.swift index af4beb29e..3bb6c86e1 100644 --- a/Riot/Model/HomeserverConfiguration/HomeserverConfigurationBuilder.swift +++ b/Riot/Model/HomeserverConfiguration/HomeserverConfigurationBuilder.swift @@ -72,6 +72,8 @@ final class HomeserverConfigurationBuilder: NSObject { jitsiServerURL = hardcodedJitsiServerURL } + let useJitsiFor1To1Calls = vectorWellKnownJitsiConfiguration?.useFor1To1Calls + // Tile server configuration let tileServerMapStyleURL: URL @@ -87,7 +89,8 @@ final class HomeserverConfigurationBuilder: NSObject { // Create HomeserverConfiguration let jitsiConfiguration = HomeserverJitsiConfiguration(serverDomain: jitsiPreferredDomain, - serverURL: jitsiServerURL) + serverURL: jitsiServerURL, + useFor1To1Calls: useJitsiFor1To1Calls) return HomeserverConfiguration(jitsi: jitsiConfiguration, encryption: encryptionConfiguration, diff --git a/Riot/Model/HomeserverConfiguration/HomeserverJitsiConfiguration.swift b/Riot/Model/HomeserverConfiguration/HomeserverJitsiConfiguration.swift index e31ea363c..16714b5dc 100644 --- a/Riot/Model/HomeserverConfiguration/HomeserverJitsiConfiguration.swift +++ b/Riot/Model/HomeserverConfiguration/HomeserverJitsiConfiguration.swift @@ -21,10 +21,12 @@ import Foundation final class HomeserverJitsiConfiguration: NSObject { let serverDomain: String? let serverURL: URL? + let useFor1To1Calls: Bool - init(serverDomain: String?, serverURL: URL?) { + init(serverDomain: String?, serverURL: URL?, useFor1To1Calls: Bool?) { self.serverDomain = serverDomain self.serverURL = serverURL + self.useFor1To1Calls = useFor1To1Calls ?? false super.init() } diff --git a/Riot/Model/WellKnown/VectorWellKnown.swift b/Riot/Model/WellKnown/VectorWellKnown.swift index 71c127e89..356fbdde8 100644 --- a/Riot/Model/WellKnown/VectorWellKnown.swift +++ b/Riot/Model/WellKnown/VectorWellKnown.swift @@ -74,7 +74,8 @@ extension VectorWellKnownEncryptionConfiguration: Decodable { // MARK: - Jitsi struct VectorWellKnownJitsiConfiguration: Decodable { - /// Default Jitsi server let preferredDomain: String? + /// Override native calling with Jitsi for 1:1 calls. + let useFor1To1Calls: Bool? } diff --git a/Riot/Modules/Room/RoomViewController.m b/Riot/Modules/Room/RoomViewController.m index 71b2e8107..a65ba666c 100644 --- a/Riot/Modules/Room/RoomViewController.m +++ b/Riot/Modules/Room/RoomViewController.m @@ -1942,7 +1942,9 @@ static CGSize kThreadListBarButtonItemImageSize; if (self.supportCallOption) { - if (self.roomDataSource.room.summary.membersCount.joined == 2 && self.roomDataSource.room.isDirect) + if (self.roomDataSource.room.summary.membersCount.joined == 2 + && self.roomDataSource.room.isDirect + && !self.mainSession.vc_homeserverConfiguration.jitsi.useFor1To1Calls) { // voice call button for Matrix call UIBarButtonItem *itemVoice = [[UIBarButtonItem alloc] initWithImage:AssetImages.voiceCallHangonIcon.image @@ -5038,7 +5040,9 @@ static CGSize kThreadListBarButtonItemImageSize; } else { - if (self.roomDataSource.room.summary.membersCount.joined == 2 && self.roomDataSource.room.isDirect) + if (self.roomDataSource.room.summary.membersCount.joined == 2 + && self.roomDataSource.room.isDirect + && !self.mainSession.vc_homeserverConfiguration.jitsi.useFor1To1Calls) { // Matrix call [self.roomDataSource.room placeCallWithVideo:video success:nil failure:nil]; diff --git a/changelog.d/7684.change b/changelog.d/7684.change new file mode 100644 index 000000000..6c2916d5c --- /dev/null +++ b/changelog.d/7684.change @@ -0,0 +1 @@ +Allow the use of Jitsi for 1:1 calls via a well-known configuration flag. \ No newline at end of file