From 5c59ecbaa670db6ba86b1de17f57107482ac6ec2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Mart=C3=ADn?= Date: Thu, 1 Feb 2024 11:49:17 +0100 Subject: [PATCH 1/4] Use `MatrixRoom.isEncrypted` value to enable encryption in room calls --- .../android/features/call/utils/DefaultCallWidgetProvider.kt | 2 +- .../libraries/matrix/api/widget/CallWidgetSettingsProvider.kt | 3 ++- .../matrix/impl/widget/DefaultCallWidgetSettingsProvider.kt | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/features/call/src/main/kotlin/io/element/android/features/call/utils/DefaultCallWidgetProvider.kt b/features/call/src/main/kotlin/io/element/android/features/call/utils/DefaultCallWidgetProvider.kt index cc6e2a299f..7fb6d3cb48 100644 --- a/features/call/src/main/kotlin/io/element/android/features/call/utils/DefaultCallWidgetProvider.kt +++ b/features/call/src/main/kotlin/io/element/android/features/call/utils/DefaultCallWidgetProvider.kt @@ -43,7 +43,7 @@ class DefaultCallWidgetProvider @Inject constructor( ): Result> = runCatching { val room = matrixClientsProvider.getOrRestore(sessionId).getOrThrow().getRoom(roomId) ?: error("Room not found") val baseUrl = appPreferencesStore.getCustomElementCallBaseUrlFlow().firstOrNull() ?: ElementCallConfig.DEFAULT_BASE_URL - val widgetSettings = callWidgetSettingsProvider.provide(baseUrl) + val widgetSettings = callWidgetSettingsProvider.provide(baseUrl, encrypted = room.isEncrypted) val callUrl = room.generateWidgetWebViewUrl(widgetSettings, clientId, languageTag, theme).getOrThrow() room.getWidgetDriver(widgetSettings).getOrThrow() to callUrl } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/widget/CallWidgetSettingsProvider.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/widget/CallWidgetSettingsProvider.kt index f0a22d0128..9e5d8a41ad 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/widget/CallWidgetSettingsProvider.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/widget/CallWidgetSettingsProvider.kt @@ -21,6 +21,7 @@ import java.util.UUID interface CallWidgetSettingsProvider { fun provide( baseUrl: String, - widgetId: String = UUID.randomUUID().toString() + widgetId: String = UUID.randomUUID().toString(), + encrypted: Boolean, ): MatrixWidgetSettings } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/DefaultCallWidgetSettingsProvider.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/DefaultCallWidgetSettingsProvider.kt index a337adff17..44c73ae9d3 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/DefaultCallWidgetSettingsProvider.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/DefaultCallWidgetSettingsProvider.kt @@ -27,7 +27,7 @@ import javax.inject.Inject @ContributesBinding(AppScope::class) class DefaultCallWidgetSettingsProvider @Inject constructor() : CallWidgetSettingsProvider { - override fun provide(baseUrl: String, widgetId: String): MatrixWidgetSettings { + override fun provide(baseUrl: String, widgetId: String, encrypted: Boolean): MatrixWidgetSettings { val options = VirtualElementCallWidgetOptions( elementCallUrl = baseUrl, widgetId = widgetId, @@ -40,7 +40,7 @@ class DefaultCallWidgetSettingsProvider @Inject constructor() : CallWidgetSettin confineToRoom = true, font = null, analyticsId = null, - encryption = EncryptionSystem.PerParticipantKeys, + encryption = if (encrypted) EncryptionSystem.PerParticipantKeys else EncryptionSystem.Unencrypted, ) val rustWidgetSettings = newVirtualElementCallWidget(options) return MatrixWidgetSettings.fromRustWidgetSettings(rustWidgetSettings) From 90e640e738bb2b251781147a949446065911df16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Mart=C3=ADn?= Date: Thu, 1 Feb 2024 12:19:25 +0100 Subject: [PATCH 2/4] Fix test fixtures --- .../matrix/test/widget/FakeCallWidgetSettingsProvider.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/widget/FakeCallWidgetSettingsProvider.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/widget/FakeCallWidgetSettingsProvider.kt index d2be886ea6..ca198129f6 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/widget/FakeCallWidgetSettingsProvider.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/widget/FakeCallWidgetSettingsProvider.kt @@ -24,7 +24,7 @@ class FakeCallWidgetSettingsProvider( ) : CallWidgetSettingsProvider { val providedBaseUrls = mutableListOf() - override fun provide(baseUrl: String, widgetId: String): MatrixWidgetSettings { + override fun provide(baseUrl: String, widgetId: String, encrypted: Boolean): MatrixWidgetSettings { providedBaseUrls += baseUrl return provideFn(baseUrl, widgetId) } From 9f3724129ae6aeaf90cbf35a442cec81ac0f5bea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Mart=C3=ADn?= Date: Thu, 1 Feb 2024 13:20:58 +0100 Subject: [PATCH 3/4] Add changelog --- changelog.d/2333.feature | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/2333.feature diff --git a/changelog.d/2333.feature b/changelog.d/2333.feature new file mode 100644 index 0000000000..305e47c5d3 --- /dev/null +++ b/changelog.d/2333.feature @@ -0,0 +1 @@ +Allow joinin unencrypted video calls in non encrypted rooms. From a44930adedcb1f773c891f22224e316bbfb81d21 Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Thu, 1 Feb 2024 15:22:42 +0100 Subject: [PATCH 4/4] Update changelog.d/2333.feature Co-authored-by: Benoit Marty --- changelog.d/2333.feature | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.d/2333.feature b/changelog.d/2333.feature index 305e47c5d3..5bde0d6734 100644 --- a/changelog.d/2333.feature +++ b/changelog.d/2333.feature @@ -1 +1 @@ -Allow joinin unencrypted video calls in non encrypted rooms. +Allow joining unencrypted video calls in non encrypted rooms.