mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-02 12:07:28 +00:00
Update dependency org.matrix.rustcomponents:sdk-android to v26.09.08 (#7668)
* 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 <jorgem@element.io>
This commit is contained in:
-1
@@ -133,7 +133,6 @@ class RustMatrixClientFactory(
|
||||
val syncService = client.syncService()
|
||||
.withSharePos(true)
|
||||
.withOfflineMode()
|
||||
.withProfilesExtension()
|
||||
.finish()
|
||||
|
||||
return RustMatrixClient(
|
||||
|
||||
+33
@@ -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)
|
||||
}
|
||||
|
||||
+9
-9
@@ -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<StateEventType>
|
||||
): 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
|
||||
}
|
||||
|
||||
-1
@@ -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()
|
||||
}
|
||||
|
||||
-14
@@ -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)
|
||||
+2
-3
@@ -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<StateEventType>): TimelineEventFilter {
|
||||
return FakeFfiTimelineEventFilter()
|
||||
return TimelineEventFilter.Exclude(emptyList())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user