From d6302a7de06508091e595b1fc8610f14e1f12661 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 17:30:00 +0000 Subject: [PATCH 1/4] Update dependency org.matrix.rustcomponents:sdk-android to v25.9.10 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0825c5049e..aa33901a1d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -176,7 +176,7 @@ jsoup = "org.jsoup:jsoup:1.21.2" appyx_core = { module = "com.bumble.appyx:core", version.ref = "appyx" } molecule-runtime = "app.cash.molecule:molecule-runtime:2.1.0" timber = "com.jakewharton.timber:timber:5.0.1" -matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.9.1" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.9.10" matrix_richtexteditor = { module = "io.element.android:wysiwyg", version.ref = "wysiwyg" } matrix_richtexteditor_compose = { module = "io.element.android:wysiwyg-compose", version.ref = "wysiwyg" } sqldelight-driver-android = { module = "app.cash.sqldelight:android-driver", version.ref = "sqldelight" } From cd830266cad03b73b608542589279c6ea9705404 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 11 Sep 2025 08:52:02 +0200 Subject: [PATCH 2/4] normalizedPowerLevel has been removed from the SDK (and was not used). --- .../impl/messagecomposer/suggestions/SuggestionsPickerView.kt | 1 - .../features/roomdetails/impl/RoomDetailsStateProvider.kt | 2 -- .../roomdetails/impl/members/RoomMemberListStateProvider.kt | 2 -- .../io/element/android/libraries/matrix/api/room/RoomMember.kt | 1 - .../libraries/matrix/impl/room/member/RoomMemberMapper.kt | 1 - .../libraries/matrix/impl/fixtures/factories/RoomMember.kt | 1 - .../android/libraries/matrix/test/room/RoomMemberFixture.kt | 2 -- .../android/libraries/previewutils/room/RoomMemberFixture.kt | 2 -- 8 files changed, 12 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt index 99a72e06a2..0f0480f404 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsPickerView.kt @@ -155,7 +155,6 @@ internal fun SuggestionsPickerViewPreview() { membership = RoomMembershipState.JOIN, isNameAmbiguous = false, powerLevel = 0L, - normalizedPowerLevel = 0L, isIgnored = false, role = RoomMember.Role.User, membershipChangeReason = null, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt index e41392ee76..c9087d6458 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt @@ -67,7 +67,6 @@ fun aDmRoomMember( membership: RoomMembershipState = RoomMembershipState.JOIN, isNameAmbiguous: Boolean = false, powerLevel: Long = 0, - normalizedPowerLevel: Long = powerLevel, isIgnored: Boolean = false, role: RoomMember.Role = RoomMember.Role.User, membershipChangeReason: String? = null, @@ -78,7 +77,6 @@ fun aDmRoomMember( membership = membership, isNameAmbiguous = isNameAmbiguous, powerLevel = powerLevel, - normalizedPowerLevel = normalizedPowerLevel, isIgnored = isIgnored, role = role, membershipChangeReason = membershipChangeReason diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListStateProvider.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListStateProvider.kt index 52acb6ebd6..a1cc9c3b92 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListStateProvider.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListStateProvider.kt @@ -148,7 +148,6 @@ fun aRoomMember( membership: RoomMembershipState = RoomMembershipState.JOIN, isNameAmbiguous: Boolean = false, powerLevel: Long = 0L, - normalizedPowerLevel: Long = 0L, isIgnored: Boolean = false, role: RoomMember.Role = RoomMember.Role.User, membershipChangeReason: String? = null, @@ -159,7 +158,6 @@ fun aRoomMember( membership = membership, isNameAmbiguous = isNameAmbiguous, powerLevel = powerLevel, - normalizedPowerLevel = normalizedPowerLevel, isIgnored = isIgnored, role = role, membershipChangeReason = membershipChangeReason, diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMember.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMember.kt index c2db1e9ec5..f1b1104a27 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMember.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMember.kt @@ -17,7 +17,6 @@ data class RoomMember( val membership: RoomMembershipState, val isNameAmbiguous: Boolean, val powerLevel: Long, - val normalizedPowerLevel: Long, val isIgnored: Boolean, val role: Role, val membershipChangeReason: String?, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/member/RoomMemberMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/member/RoomMemberMapper.kt index 9411ae3aab..af7376e445 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/member/RoomMemberMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/member/RoomMemberMapper.kt @@ -25,7 +25,6 @@ object RoomMemberMapper { membership = mapMembership(roomMember.membership), isNameAmbiguous = roomMember.isNameAmbiguous, powerLevel = powerLevel, - normalizedPowerLevel = roomMember.normalizedPowerLevel.into(), isIgnored = roomMember.isIgnored, role = mapRole(roomMember.suggestedRoleForPowerLevel, powerLevel), membershipChangeReason = roomMember.membershipChangeReason diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/RoomMember.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/RoomMember.kt index 2922762548..d606008989 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/RoomMember.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/RoomMember.kt @@ -30,7 +30,6 @@ fun aRustRoomMember( membership = membership, isNameAmbiguous = isNameAmbiguous, powerLevel = powerLevel, - normalizedPowerLevel = powerLevel, isIgnored = isIgnored, suggestedRoleForPowerLevel = role, membershipChangeReason = membershipChangeReason, diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomMemberFixture.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomMemberFixture.kt index e2644cdf4d..9dc72247f0 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomMemberFixture.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/RoomMemberFixture.kt @@ -19,7 +19,6 @@ fun aRoomMember( membership: RoomMembershipState = RoomMembershipState.JOIN, isNameAmbiguous: Boolean = false, powerLevel: Long = 0L, - normalizedPowerLevel: Long = 0L, isIgnored: Boolean = false, role: RoomMember.Role = RoomMember.Role.User, membershipChangeReason: String? = null, @@ -30,7 +29,6 @@ fun aRoomMember( membership = membership, isNameAmbiguous = isNameAmbiguous, powerLevel = powerLevel, - normalizedPowerLevel = normalizedPowerLevel, isIgnored = isIgnored, role = role, membershipChangeReason = membershipChangeReason, diff --git a/libraries/previewutils/src/main/kotlin/io/element/android/libraries/previewutils/room/RoomMemberFixture.kt b/libraries/previewutils/src/main/kotlin/io/element/android/libraries/previewutils/room/RoomMemberFixture.kt index 0c79bb7eeb..e699f3c4b2 100644 --- a/libraries/previewutils/src/main/kotlin/io/element/android/libraries/previewutils/room/RoomMemberFixture.kt +++ b/libraries/previewutils/src/main/kotlin/io/element/android/libraries/previewutils/room/RoomMemberFixture.kt @@ -19,7 +19,6 @@ fun aRoomMember( membership: RoomMembershipState = RoomMembershipState.JOIN, isNameAmbiguous: Boolean = false, powerLevel: Long = 0L, - normalizedPowerLevel: Long = 0L, isIgnored: Boolean = false, role: RoomMember.Role = RoomMember.Role.User, membershipChangeReason: String? = null, @@ -30,7 +29,6 @@ fun aRoomMember( membership = membership, isNameAmbiguous = isNameAmbiguous, powerLevel = powerLevel, - normalizedPowerLevel = normalizedPowerLevel, isIgnored = isIgnored, role = role, membershipChangeReason = membershipChangeReason, From 2e5a042774689248c5436cc0a6b407ee8550e62d Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 11 Sep 2025 08:58:36 +0200 Subject: [PATCH 3/4] SDK API change: handle change on VirtualElementCallWidgetOptions --- .../DefaultCallWidgetSettingsProvider.kt | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) 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 c45eeaa0ba..1ace9ad4c7 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 @@ -21,7 +21,8 @@ import org.matrix.rustcomponents.sdk.newVirtualElementCallWidget import uniffi.matrix_sdk.EncryptionSystem import uniffi.matrix_sdk.HeaderStyle import uniffi.matrix_sdk.NotificationType -import uniffi.matrix_sdk.VirtualElementCallWidgetOptions +import uniffi.matrix_sdk.VirtualElementCallWidgetConfig +import uniffi.matrix_sdk.VirtualElementCallWidgetProperties import uniffi.matrix_sdk.Intent as CallIntent @ContributesBinding(AppScope::class) @@ -33,17 +34,12 @@ class DefaultCallWidgetSettingsProvider( ) : CallWidgetSettingsProvider { override suspend fun provide(baseUrl: String, widgetId: String, encrypted: Boolean, direct: Boolean): MatrixWidgetSettings { val isAnalyticsEnabled = analyticsService.userConsentFlow.first() - val options = VirtualElementCallWidgetOptions( + val properties = VirtualElementCallWidgetProperties( elementCallUrl = baseUrl, widgetId = widgetId, - preload = null, fontScale = null, - appPrompt = false, - confineToRoom = true, font = null, encryption = if (encrypted) EncryptionSystem.PerParticipantKeys else EncryptionSystem.Unencrypted, - intent = CallIntent.START_CALL, - hideScreensharing = false, posthogUserId = callAnalyticsCredentialsProvider.posthogUserId.takeIf { isAnalyticsEnabled }, posthogApiHost = callAnalyticsCredentialsProvider.posthogApiHost.takeIf { isAnalyticsEnabled }, posthogApiKey = callAnalyticsCredentialsProvider.posthogApiKey.takeIf { isAnalyticsEnabled }, @@ -51,13 +47,24 @@ class DefaultCallWidgetSettingsProvider( sentryDsn = callAnalyticsCredentialsProvider.sentryDsn.takeIf { isAnalyticsEnabled }, sentryEnvironment = if (buildMeta.buildType == BuildType.RELEASE) "RELEASE" else "DEBUG", parentUrl = null, + ) + val config = VirtualElementCallWidgetConfig( + preload = null, + appPrompt = false, + confineToRoom = true, + intent = CallIntent.START_CALL, + hideScreensharing = false, // For backwards compatibility, it'll be ignored in recent versions of Element Call hideHeader = true, - controlledMediaDevices = true, + controlledAudioDevices = true, header = HeaderStyle.APP_BAR, sendNotificationType = if (direct) NotificationType.RING else NotificationType.NOTIFICATION, + skipLobby = null, + ) + val rustWidgetSettings = newVirtualElementCallWidget( + props = properties, + config = config, ) - val rustWidgetSettings = newVirtualElementCallWidget(options) return MatrixWidgetSettings.fromRustWidgetSettings(rustWidgetSettings) } } From 637c58ff3dea007a098647e786330e112ce8337f Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 11 Sep 2025 09:02:43 +0200 Subject: [PATCH 4/4] Add a TODO --- .../matrix/impl/widget/DefaultCallWidgetSettingsProvider.kt | 1 + 1 file changed, 1 insertion(+) 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 1ace9ad4c7..f656cc16a4 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 @@ -52,6 +52,7 @@ class DefaultCallWidgetSettingsProvider( preload = null, appPrompt = false, confineToRoom = true, + // TODO We probably want to provide different values for this field. intent = CallIntent.START_CALL, hideScreensharing = false, // For backwards compatibility, it'll be ignored in recent versions of Element Call