From 3df1906d2a2bac789870221463636d729fb2212b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 8 Sep 2026 16:22:14 +0200 Subject: [PATCH] Update dependency org.matrix.rustcomponents:sdk-android to v26.09.08 (#7668) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update dependency org.matrix.rustcomponents:sdk-android to v26.09.08 * Fix API breaks: - There's no `SyncServiceBuilder.withProfilesExtension()` method anymore. This is now enabled unconditionally in the SDK. - Timeline filters no longer use the `org.matrix.rustcomponents.sdk.TimelineEventFilter` FFI wrapper, but the `uniffi.matrix_sdk_ui.TimelineEventFilter` type directly. This also changes the underlying types used for inclusion/exclusion. --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Jorge Martín --- gradle/libs.versions.toml | 2 +- .../matrix/impl/RustMatrixClientFactory.kt | 1 - .../matrix/impl/room/StateEventType.kt | 33 +++++++++++++++++++ .../impl/room/TimelineEventFilterFactory.kt | 18 +++++----- .../fakes/FakeFfiSyncServiceBuilder.kt | 1 - .../fakes/FakeFfiTimelineEventFilter.kt | 14 -------- .../room/FakeTimelineEventFilterFactory.kt | 5 ++- 7 files changed, 45 insertions(+), 29 deletions(-) delete mode 100644 libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimelineEventFilter.kt diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5bc48ff168..bb8fdb2f51 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -185,7 +185,7 @@ test_detekt_test = { module = "io.gitlab.arturbosch.detekt:detekt-test", version # https://github.com/matrix-org/matrix-rust-components-kotlin/commits/main/sdk/sdk-android/src/main/kotlin/org/matrix/rustcomponents/sdk/matrix_sdk_ffi.kt # All new features should not be implemented in the pull request that upgrades the version, developers should # only fix API breaks and may add some TODOs. -matrix_sdk = "org.matrix.rustcomponents:sdk-android:26.09.3" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:26.09.08" # Others coil = { module = "io.coil-kt.coil3:coil", version.ref = "coil" } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt index de29e7a953..985fd3cdef 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt @@ -133,7 +133,6 @@ class RustMatrixClientFactory( val syncService = client.syncService() .withSharePos(true) .withOfflineMode() - .withProfilesExtension() .finish() return RustMatrixClient( diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/StateEventType.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/StateEventType.kt index e64eb87570..03fab68697 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/StateEventType.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/StateEventType.kt @@ -9,7 +9,9 @@ package io.element.android.libraries.matrix.impl.room import io.element.android.libraries.matrix.api.room.StateEventType +import uniffi.ruma_events.TimelineEventType import uniffi.ruma_events.stateEventTypeFromString +import uniffi.ruma_events.timelineEventTypeFromString import uniffi.ruma_events.StateEventType as RustStateEventType fun StateEventType.map(): RustStateEventType = when (this) { @@ -73,3 +75,34 @@ fun RustStateEventType.map(): StateEventType = when (this) { RustStateEventType.RoomRetention -> StateEventType.RoomRetention is RustStateEventType.Custom -> StateEventType.Custom(this.toString()) } + +fun TimelineEventType.Companion.fromState(stateEventType: StateEventType): TimelineEventType = when (stateEventType) { + StateEventType.PolicyRuleRoom -> TimelineEventType.PolicyRuleRoom + StateEventType.PolicyRuleServer -> TimelineEventType.PolicyRuleServer + StateEventType.PolicyRuleUser -> TimelineEventType.PolicyRuleUser + StateEventType.CallMember -> TimelineEventType.CallMember + StateEventType.RoomAvatar -> TimelineEventType.RoomAvatar + StateEventType.RoomCanonicalAlias -> TimelineEventType.RoomCanonicalAlias + StateEventType.RoomCreate -> TimelineEventType.RoomCreate + StateEventType.RoomEncryption -> TimelineEventType.RoomEncryption + StateEventType.RoomGuestAccess -> TimelineEventType.RoomGuestAccess + StateEventType.RoomHistoryVisibility -> TimelineEventType.RoomHistoryVisibility + StateEventType.RoomJoinRules -> TimelineEventType.RoomJoinRules + StateEventType.RoomMemberEvent -> TimelineEventType.RoomMember + StateEventType.RoomName -> TimelineEventType.RoomName + StateEventType.RoomPinnedEvents -> TimelineEventType.RoomPinnedEvents + StateEventType.RoomPowerLevels -> TimelineEventType.RoomPowerLevels + StateEventType.RoomServerAcl -> TimelineEventType.RoomServerAcl + StateEventType.RoomThirdPartyInvite -> TimelineEventType.RoomThirdPartyInvite + StateEventType.RoomTombstone -> TimelineEventType.RoomTombstone + StateEventType.RoomTopic -> TimelineEventType.RoomTopic + StateEventType.SpaceChild -> TimelineEventType.SpaceChild + StateEventType.SpaceParent -> TimelineEventType.SpaceParent + StateEventType.BeaconInfo -> TimelineEventType.BeaconInfo + StateEventType.MemberHints -> TimelineEventType.MemberHints + StateEventType.RoomImagePack -> TimelineEventType.RoomImagePack + StateEventType.RoomLanguage -> TimelineEventType.RoomLanguage + StateEventType.RoomPolicy -> TimelineEventType.RoomPolicy + StateEventType.RoomRetention -> TimelineEventType.RoomRetention + is StateEventType.Custom -> timelineEventTypeFromString(stateEventType.type) +} diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/TimelineEventFilterFactory.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/TimelineEventFilterFactory.kt index a966acaa2b..1d2f465b64 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/TimelineEventFilterFactory.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/TimelineEventFilterFactory.kt @@ -12,10 +12,10 @@ import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.libraries.matrix.api.room.StateEventType import io.element.android.libraries.matrix.api.room.join.JoinRule -import org.matrix.rustcomponents.sdk.FilterTimelineEventCondition -import org.matrix.rustcomponents.sdk.FilterTimelineEventType -import org.matrix.rustcomponents.sdk.TimelineEventFilter import uniffi.matrix_sdk_ui.MembershipChangeFilter +import uniffi.matrix_sdk_ui.TimelineEventCondition +import uniffi.matrix_sdk_ui.TimelineEventFilter +import uniffi.ruma_events.TimelineEventType interface TimelineEventFilterFactory { fun create( @@ -32,22 +32,22 @@ class RustTimelineEventFilterFactory : TimelineEventFilterFactory { isEncrypted: Boolean?, excludedStateTypes: List ): TimelineEventFilter? { - val excludedEventTypes = excludedStateTypes.map { - FilterTimelineEventCondition.EventType(FilterTimelineEventType.State(it.map())) + val excludedEventTypes = excludedStateTypes.map { stateEventType -> + TimelineEventCondition.EventType(TimelineEventType.fromState(stateEventType)) } // If the room is publicly joinable and not encrypted, we also want to exclude membership changes and profile changes, // as they will pollute the timelines since they're quite common and not add much value. val excludedMembershipChanges = if (joinRule !is JoinRule.Invite && isEncrypted == false) { listOf( - FilterTimelineEventCondition.MembershipChange(MembershipChangeFilter.JOIN), - FilterTimelineEventCondition.MembershipChange(MembershipChangeFilter.LEAVE), - FilterTimelineEventCondition.ProfileChange, + TimelineEventCondition.MembershipChange(MembershipChangeFilter.JOIN), + TimelineEventCondition.MembershipChange(MembershipChangeFilter.LEAVE), + TimelineEventCondition.ProfileChange, ) } else { emptyList() } return if (excludedEventTypes.isNotEmpty() || excludedMembershipChanges.isNotEmpty()) { - TimelineEventFilter.exclude(excludedEventTypes + excludedMembershipChanges) + TimelineEventFilter.Exclude(excludedEventTypes + excludedMembershipChanges) } else { null } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSyncServiceBuilder.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSyncServiceBuilder.kt index 5a2615aa2b..2cb67f2519 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSyncServiceBuilder.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSyncServiceBuilder.kt @@ -15,6 +15,5 @@ import org.matrix.rustcomponents.sdk.SyncServiceBuilder class FakeFfiSyncServiceBuilder : SyncServiceBuilder(NoHandle) { override fun withOfflineMode(): SyncServiceBuilder = this override fun withSharePos(enable: Boolean): SyncServiceBuilder = this - override fun withProfilesExtension(): SyncServiceBuilder = this override suspend fun finish(): SyncService = FakeFfiSyncService() } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimelineEventFilter.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimelineEventFilter.kt deleted file mode 100644 index 2f9798dcc2..0000000000 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimelineEventFilter.kt +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright (c) 2025 Element Creations Ltd. - * Copyright 2024, 2025 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial. - * Please see LICENSE files in the repository root for full details. - */ - -package io.element.android.libraries.matrix.impl.fixtures.fakes - -import org.matrix.rustcomponents.sdk.NoHandle -import org.matrix.rustcomponents.sdk.TimelineEventFilter - -class FakeFfiTimelineEventFilter : TimelineEventFilter(NoHandle) diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/FakeTimelineEventFilterFactory.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/FakeTimelineEventFilterFactory.kt index 713e04d239..71a4ea43f4 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/FakeTimelineEventFilterFactory.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/FakeTimelineEventFilterFactory.kt @@ -10,11 +10,10 @@ package io.element.android.libraries.matrix.impl.room import io.element.android.libraries.matrix.api.room.StateEventType import io.element.android.libraries.matrix.api.room.join.JoinRule -import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiTimelineEventFilter -import org.matrix.rustcomponents.sdk.TimelineEventFilter +import uniffi.matrix_sdk_ui.TimelineEventFilter class FakeTimelineEventFilterFactory : TimelineEventFilterFactory { override fun create(joinRule: JoinRule?, isEncrypted: Boolean?, excludedStateTypes: List): TimelineEventFilter { - return FakeFfiTimelineEventFilter() + return TimelineEventFilter.Exclude(emptyList()) } }