From 306e1cb950fd82f8a52ea7145ddce3d5f3f888d8 Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Fri, 25 Sep 2026 16:08:19 +0200 Subject: [PATCH] Upgrade SDK bindings to `v26.09.26` (#7780) * Bump SDK bindings to `v26.09.26` This version contains a fix for issues in `v26.09.25` related to certificate verification. * Fix breaking API changes in the latest bindings * Unify `FeatureFlags.RoomThreadList` with `FeatureFlags.Threads` --- .../android/features/messages/impl/MessagesPresenter.kt | 2 +- .../features/messages/impl/MessagesPresenterTest.kt | 2 +- gradle/libs.versions.toml | 2 +- .../android/libraries/featureflag/api/FeatureFlags.kt | 7 ------- .../libraries/matrix/impl/auth/AuthenticationException.kt | 1 - .../android/libraries/matrix/impl/room/JoinedRustRoom.kt | 2 +- .../impl/timeline/item/event/EventTimelineItemMapper.kt | 3 +-- .../matrix/impl/fixtures/factories/EventTimelineItem.kt | 3 +++ .../impl/fixtures/factories/TimelineItemContentMsgLike.kt | 1 - 9 files changed, 8 insertions(+), 15 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt index 92574c7c1a..98e595c110 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt @@ -178,7 +178,7 @@ class MessagesPresenter( .collectLatest { value = it.toImmutableList() } } - val canOpenThreadList by featureFlagService.isFeatureEnabledFlow(FeatureFlags.RoomThreadList).collectAsState(initial = false) + val canOpenThreadList by featureFlagService.isFeatureEnabledFlow(FeatureFlags.Threads).collectAsState(initial = false) val isCurrentlySharingLiveLocationInRoom by remember { liveLocationShareManager.isCurrentlySharing(room.roomId) }.collectAsState() val userEventPermissions by room.permissionsAsState(UserEventPermissions.DEFAULT) { perms -> diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt index ee87d743db..858a1f345f 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt @@ -1465,7 +1465,7 @@ class MessagesPresenterTest { assertThat(initialState.threads.hasThreads).isFalse() // Enable the feature flag, now it should reflect the thread list state - featureFlagService.setFeatureEnabled(FeatureFlags.RoomThreadList, true) + featureFlagService.setFeatureEnabled(FeatureFlags.Threads, true) skipItems(1) assertThat(awaitItem().threads.hasThreads).isTrue() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c014f67c31..5ede6519a9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -183,7 +183,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.9" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:26.09.26" # Others coil = { module = "io.coil-kt.coil3:coil", version.ref = "coil" } diff --git a/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt b/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt index 28a03def12..98bb55fecf 100644 --- a/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt +++ b/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt @@ -116,13 +116,6 @@ enum class FeatureFlags( defaultValue = { false }, isFinished = false, ), - RoomThreadList( - key = "feature.room_thread_list", - title = "Add a list of threads in a room", - description = "Add a new screen with a list of threads in a room.", - defaultValue = { false }, - isFinished = false, - ), AutomaticBackPagination( key = "feature.automatic_back_pagination", title = "Automatic back pagination of rooms", diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationException.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationException.kt index 6a06ac0599..5a3bb67567 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationException.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationException.kt @@ -28,7 +28,6 @@ fun Throwable.mapAuthenticationException(): AuthenticationException { } is ClientBuildException.WellKnownLookupFailed -> AuthenticationException.Generic(message) is ClientBuildException.EventCache -> AuthenticationException.Generic(message) - is ClientBuildException.InvalidRawKey -> AuthenticationException.Generic(message) is ClientBuildException.WellKnownLookupDisabled -> AuthenticationException.Generic(message) } is OAuthException -> when (this) { diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt index e892c62e84..17a3910c98 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt @@ -478,7 +478,7 @@ class JoinedRustRoom( widgetSettings = widgetSettings, room = innerRoom, widgetCapabilitiesProvider = object : WidgetCapabilitiesProvider { - override fun acquireCapabilities(capabilities: WidgetCapabilities): WidgetCapabilities { + override suspend fun acquireCapabilities(capabilities: WidgetCapabilities): WidgetCapabilities { return getElementCallRequiredPermissions(sessionId.value, baseRoom.deviceId.value) } }, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt index 3a568761ce..db8f4753ec 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt @@ -31,7 +31,6 @@ import org.matrix.rustcomponents.sdk.EventOrTransactionId import org.matrix.rustcomponents.sdk.QueueWedgeError import org.matrix.rustcomponents.sdk.Reaction import org.matrix.rustcomponents.sdk.ShieldState -import org.matrix.rustcomponents.sdk.TimelineItemContent import uniffi.matrix_sdk_ui.TimelineEventShieldStateCode import org.matrix.rustcomponents.sdk.EventSendState as RustEventSendState import org.matrix.rustcomponents.sdk.EventTimelineItem as RustEventTimelineItem @@ -52,7 +51,7 @@ class EventTimelineItemMapper( isOwn = isOwn, isRemote = isRemote, localSendState = localSendState?.map(), - reactions = (content as? TimelineItemContent.MsgLike)?.content?.reactions.map(), + reactions = reactions.map(), receipts = readReceipts.map(), sender = UserId(sender), senderProfile = senderProfile.map(), diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/EventTimelineItem.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/EventTimelineItem.kt index 8689de3c9b..68990560ce 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/EventTimelineItem.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/EventTimelineItem.kt @@ -16,6 +16,7 @@ import org.matrix.rustcomponents.sdk.EventSendState import org.matrix.rustcomponents.sdk.EventTimelineItem import org.matrix.rustcomponents.sdk.LazyTimelineItemProvider import org.matrix.rustcomponents.sdk.ProfileDetails +import org.matrix.rustcomponents.sdk.Reaction import org.matrix.rustcomponents.sdk.Receipt import org.matrix.rustcomponents.sdk.TimelineItemContent import uniffi.matrix_sdk_ui.EventItemOrigin @@ -37,6 +38,7 @@ internal fun aRustEventTimelineItem( readReceipts: Map = emptyMap(), origin: EventItemOrigin? = EventItemOrigin.SYNC, canBeRepliedTo: Boolean = true, + reactions: List = emptyList(), lazyProvider: LazyTimelineItemProvider = FakeFfiLazyTimelineItemProvider(), ) = EventTimelineItem( isRemote = isRemote, @@ -55,5 +57,6 @@ internal fun aRustEventTimelineItem( readReceipts = readReceipts, origin = origin, canBeRepliedTo = canBeRepliedTo, + reactions = reactions, lazyProvider = lazyProvider, ) diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/TimelineItemContentMsgLike.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/TimelineItemContentMsgLike.kt index 0db7590a5c..157adde323 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/TimelineItemContentMsgLike.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/TimelineItemContentMsgLike.kt @@ -27,7 +27,6 @@ internal fun aRustTimelineItemContentMsgLike( mentions = null, ) ), - reactions = emptyList(), threadRoot = null, inReplyTo = null, threadSummary = null,