Use MatrixRoom.isEncrypted value to enable encryption in room calls

This commit is contained in:
Jorge Martín 2024-02-01 11:49:17 +01:00
parent c0e6813e3b
commit 34d7657e19
3 changed files with 5 additions and 4 deletions

View file

@ -43,7 +43,7 @@ class DefaultCallWidgetProvider @Inject constructor(
): Result<Pair<MatrixWidgetDriver, String>> = runCatching { ): Result<Pair<MatrixWidgetDriver, String>> = runCatching {
val room = matrixClientsProvider.getOrRestore(sessionId).getOrThrow().getRoom(roomId) ?: error("Room not found") val room = matrixClientsProvider.getOrRestore(sessionId).getOrThrow().getRoom(roomId) ?: error("Room not found")
val baseUrl = appPreferencesStore.getCustomElementCallBaseUrlFlow().firstOrNull() ?: ElementCallConfig.DEFAULT_BASE_URL 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() val callUrl = room.generateWidgetWebViewUrl(widgetSettings, clientId, languageTag, theme).getOrThrow()
room.getWidgetDriver(widgetSettings).getOrThrow() to callUrl room.getWidgetDriver(widgetSettings).getOrThrow() to callUrl
} }

View file

@ -21,6 +21,7 @@ import java.util.UUID
interface CallWidgetSettingsProvider { interface CallWidgetSettingsProvider {
fun provide( fun provide(
baseUrl: String, baseUrl: String,
widgetId: String = UUID.randomUUID().toString() widgetId: String = UUID.randomUUID().toString(),
encrypted: Boolean,
): MatrixWidgetSettings ): MatrixWidgetSettings
} }

View file

@ -27,7 +27,7 @@ import javax.inject.Inject
@ContributesBinding(AppScope::class) @ContributesBinding(AppScope::class)
class DefaultCallWidgetSettingsProvider @Inject constructor() : CallWidgetSettingsProvider { 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( val options = VirtualElementCallWidgetOptions(
elementCallUrl = baseUrl, elementCallUrl = baseUrl,
widgetId = widgetId, widgetId = widgetId,
@ -40,7 +40,7 @@ class DefaultCallWidgetSettingsProvider @Inject constructor() : CallWidgetSettin
confineToRoom = true, confineToRoom = true,
font = null, font = null,
analyticsId = null, analyticsId = null,
encryption = EncryptionSystem.PerParticipantKeys, encryption = if (encrypted) EncryptionSystem.PerParticipantKeys else EncryptionSystem.Unencrypted,
) )
val rustWidgetSettings = newVirtualElementCallWidget(options) val rustWidgetSettings = newVirtualElementCallWidget(options)
return MatrixWidgetSettings.fromRustWidgetSettings(rustWidgetSettings) return MatrixWidgetSettings.fromRustWidgetSettings(rustWidgetSettings)