Skip to content

Commit 4cb3b16

Browse files
Update dependency org.matrix.rustcomponents:sdk-android to v26.2.6 (#6144)
* Update dependency org.matrix.rustcomponents:sdk-android to v26.2.5 * Fix breaking API changes: - Add temporary imlementation for `RustClientSessionDelegate.onBackgroundTaskErrorReport`, logging unrecoverable errors in background tasks of the SDK. - Change `TimelineEventTypeFilter` to `TimelineEventFilter`. - Support new `LatestEventValue.RemoteInvite`. * Update the Rust SDK to `26.2.6` * Fix API changes: `TimelineFocus.PinnedEvents` no longer takes any arguments * Fix test fixtures: `NotificationItem` has a `rawEvent` field now --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Jorge Martín <jorgem@element.io>
1 parent bd30af3 commit 4cb3b16

File tree

16 files changed

+52
-33
lines changed

16 files changed

+52
-33
lines changed

features/home/impl/src/main/kotlin/io/element/android/features/home/impl/datasource/RoomListRoomSummaryFactory.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ class RoomListRoomSummaryFactory(
9595
content = content,
9696
)
9797
}
98+
is LatestEventValue.RoomInvite -> LatestEvent.None
9899
}
99100
}
100101
}

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ test_detekt_test = { module = "io.gitlab.arturbosch.detekt:detekt-test", version
177177
# 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
178178
# All new features should not be implemented in the pull request that upgrades the version, developers should
179179
# only fix API breaks and may add some TODOs.
180-
matrix_sdk = "org.matrix.rustcomponents:sdk-android:26.1.27"
180+
matrix_sdk = "org.matrix.rustcomponents:sdk-android:26.2.6"
181181

182182
# Others
183183
coil = { module = "io.coil-kt.coil3:coil", version.ref = "coil" }

libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/LatestEventValue.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,10 @@ sealed interface LatestEventValue {
2828
val senderProfile: ProfileDetails,
2929
val isSending: Boolean,
3030
) : LatestEventValue
31+
32+
data class RoomInvite(
33+
val timestamp: Long,
34+
val inviterId: UserId?,
35+
val invitedProfile: ProfileDetails,
36+
) : LatestEventValue
3137
}

libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/RoomSummary.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ data class RoomSummary(
1919
is LatestEventValue.None -> null
2020
is LatestEventValue.Local -> latestEvent.timestamp
2121
is LatestEventValue.Remote -> latestEvent.timestamp
22+
is LatestEventValue.RoomInvite -> latestEvent.timestamp
2223
}
2324
val isOneToOne get() = info.activeMembersCount == 2L
2425
}

libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustClientSessionDelegate.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import org.matrix.rustcomponents.sdk.ClientDelegate
2020
import org.matrix.rustcomponents.sdk.ClientSessionDelegate
2121
import org.matrix.rustcomponents.sdk.Session
2222
import timber.log.Timber
23+
import uniffi.matrix_sdk_common.BackgroundTaskFailureReason
2324
import java.lang.ref.WeakReference
2425
import java.util.concurrent.atomic.AtomicBoolean
2526

@@ -120,6 +121,11 @@ class RustClientSessionDelegate(
120121
}
121122
}
122123

124+
override fun onBackgroundTaskErrorReport(taskName: String, error: BackgroundTaskFailureReason) {
125+
// TODO actually implement the missing logic to report to sentry and crash the app
126+
Timber.tag(loggerTag.value).e("onBackgroundTaskErrorReport(taskName=$taskName, error=$error)")
127+
}
128+
123129
override fun retrieveSessionFromKeychain(userId: String): Session {
124130
// This should never be called, as it's only used for multi-process setups
125131
error("retrieveSessionFromKeychain should never be called for Android")

libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ import io.element.android.libraries.matrix.impl.room.RoomContentForwarder
6666
import io.element.android.libraries.matrix.impl.room.RoomInfoMapper
6767
import io.element.android.libraries.matrix.impl.room.RoomSyncSubscriber
6868
import io.element.android.libraries.matrix.impl.room.RustRoomFactory
69-
import io.element.android.libraries.matrix.impl.room.TimelineEventTypeFilterFactory
69+
import io.element.android.libraries.matrix.impl.room.TimelineEventFilterFactory
7070
import io.element.android.libraries.matrix.impl.room.history.map
7171
import io.element.android.libraries.matrix.impl.room.join.map
7272
import io.element.android.libraries.matrix.impl.room.preview.RoomPreviewInfoMapper
@@ -141,7 +141,7 @@ class RustMatrixClient(
141141
dispatchers: CoroutineDispatchers,
142142
baseCacheDirectory: File,
143143
clock: SystemClock,
144-
timelineEventTypeFilterFactory: TimelineEventTypeFilterFactory,
144+
timelineEventFilterFactory: TimelineEventFilterFactory,
145145
private val featureFlagService: FeatureFlagService,
146146
private val analyticsService: AnalyticsService,
147147
private val workManagerScheduler: WorkManagerScheduler,
@@ -225,7 +225,7 @@ class RustMatrixClient(
225225
systemClock = clock,
226226
roomContentForwarder = RoomContentForwarder(innerRoomListService),
227227
roomSyncSubscriber = roomSyncSubscriber,
228-
timelineEventTypeFilterFactory = timelineEventTypeFilterFactory,
228+
timelineEventFilterFactory = timelineEventFilterFactory,
229229
roomMembershipObserver = roomMembershipObserver,
230230
roomInfoMapper = roomInfoMapper,
231231
featureFlagService = featureFlagService,

libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import io.element.android.libraries.matrix.impl.certificates.UserCertificatesPro
2121
import io.element.android.libraries.matrix.impl.paths.SessionPaths
2222
import io.element.android.libraries.matrix.impl.paths.getSessionPaths
2323
import io.element.android.libraries.matrix.impl.proxy.ProxyProvider
24-
import io.element.android.libraries.matrix.impl.room.TimelineEventTypeFilterFactory
24+
import io.element.android.libraries.matrix.impl.room.TimelineEventFilterFactory
2525
import io.element.android.libraries.matrix.impl.storage.SqliteStoreBuilderProvider
2626
import io.element.android.libraries.matrix.impl.util.anonymizedTokens
2727
import io.element.android.libraries.network.useragent.UserAgentProvider
@@ -61,7 +61,7 @@ class RustMatrixClientFactory(
6161
private val clock: SystemClock,
6262
private val analyticsService: AnalyticsService,
6363
private val featureFlagService: FeatureFlagService,
64-
private val timelineEventTypeFilterFactory: TimelineEventTypeFilterFactory,
64+
private val timelineEventFilterFactory: TimelineEventFilterFactory,
6565
private val clientBuilderProvider: ClientBuilderProvider,
6666
private val sqliteStoreBuilderProvider: SqliteStoreBuilderProvider,
6767
private val workManagerScheduler: WorkManagerScheduler,
@@ -115,7 +115,7 @@ class RustMatrixClientFactory(
115115
dispatchers = coroutineDispatchers,
116116
baseCacheDirectory = cacheDirectory,
117117
clock = clock,
118-
timelineEventTypeFilterFactory = timelineEventTypeFilterFactory,
118+
timelineEventFilterFactory = timelineEventFilterFactory,
119119
featureFlagService = featureFlagService,
120120
analyticsService = analyticsService,
121121
workManagerScheduler = workManagerScheduler,

libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ import org.matrix.rustcomponents.sdk.getElementCallRequiredPermissions
8080
import org.matrix.rustcomponents.sdk.use
8181
import timber.log.Timber
8282
import uniffi.matrix_sdk.RoomPowerLevelChanges
83+
import uniffi.matrix_sdk_ui.TimelineEventFocusThreadMode
8384
import uniffi.matrix_sdk_ui.TimelineReadReceiptTracking
8485
import kotlin.coroutines.cancellation.CancellationException
8586
import org.matrix.rustcomponents.sdk.IdentityStatusChange as RustIdentityStateChange
@@ -177,21 +178,18 @@ class JoinedRustRoom(
177178
): Result<Timeline> = withContext(roomDispatcher) {
178179
val hideThreadedEvents = featureFlagService.isFeatureEnabled(FeatureFlags.Threads)
179180
val focus = when (createTimelineParams) {
180-
is CreateTimelineParams.PinnedOnly -> TimelineFocus.PinnedEvents(
181-
maxEventsToLoad = 100u,
182-
maxConcurrentRequests = 10u,
183-
)
181+
is CreateTimelineParams.PinnedOnly -> TimelineFocus.PinnedEvents
184182
is CreateTimelineParams.MediaOnly -> TimelineFocus.Live(hideThreadedEvents = hideThreadedEvents)
185183
is CreateTimelineParams.Focused -> TimelineFocus.Event(
186184
eventId = createTimelineParams.focusedEventId.value,
187185
numContextEvents = 50u,
188-
hideThreadedEvents = hideThreadedEvents,
186+
threadMode = TimelineEventFocusThreadMode.Automatic(hideThreadedEvents),
189187
)
190188
is CreateTimelineParams.MediaOnlyFocused -> TimelineFocus.Event(
191189
eventId = createTimelineParams.focusedEventId.value,
192190
numContextEvents = 50u,
193191
// Never hide threaded events in media focused timeline
194-
hideThreadedEvents = false,
192+
threadMode = TimelineEventFocusThreadMode.Automatic(false),
195193
)
196194
is CreateTimelineParams.Threaded -> TimelineFocus.Thread(
197195
rootEventId = createTimelineParams.threadRootEventId.value,

libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomFactory.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class RustRoomFactory(
5757
private val roomListService: RoomListService,
5858
private val innerRoomListService: InnerRoomListService,
5959
private val roomSyncSubscriber: RoomSyncSubscriber,
60-
private val timelineEventTypeFilterFactory: TimelineEventTypeFilterFactory,
60+
private val timelineEventFilterFactory: TimelineEventFilterFactory,
6161
private val featureFlagService: FeatureFlagService,
6262
private val roomMembershipObserver: RoomMembershipObserver,
6363
private val roomInfoMapper: RoomInfoMapper,
@@ -70,7 +70,7 @@ class RustRoomFactory(
7070
private val eventFilters = TimelineConfig.excludedEvents
7171
.takeIf { it.isNotEmpty() }
7272
?.let { listStateEventType ->
73-
timelineEventTypeFilterFactory.create(listStateEventType)
73+
timelineEventFilterFactory.create(listStateEventType)
7474
}
7575

7676
suspend fun destroy() {
@@ -133,7 +133,7 @@ class RustRoomFactory(
133133
sdkRoom.timelineWithConfiguration(
134134
TimelineConfiguration(
135135
focus = TimelineFocus.Live(hideThreadedEvents = hideThreadedEvents),
136-
filter = eventFilters?.let(TimelineFilter::EventTypeFilter) ?: TimelineFilter.All,
136+
filter = eventFilters?.let(TimelineFilter::EventFilter) ?: TimelineFilter.All,
137137
internalIdPrefix = "live",
138138
dateDividerMode = DateDividerMode.DAILY,
139139
trackReadReceipts = TimelineReadReceiptTracking.ALL_EVENTS,

libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/TimelineEventTypeFilterFactory.kt renamed to libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/TimelineEventFilterFactory.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,16 @@ import dev.zacsweers.metro.AppScope
1212
import dev.zacsweers.metro.ContributesBinding
1313
import io.element.android.libraries.matrix.api.room.StateEventType
1414
import org.matrix.rustcomponents.sdk.FilterTimelineEventType
15-
import org.matrix.rustcomponents.sdk.TimelineEventTypeFilter
15+
import org.matrix.rustcomponents.sdk.TimelineEventFilter
1616

17-
interface TimelineEventTypeFilterFactory {
18-
fun create(listStateEventType: List<StateEventType>): TimelineEventTypeFilter
17+
interface TimelineEventFilterFactory {
18+
fun create(listStateEventType: List<StateEventType>): TimelineEventFilter
1919
}
2020

2121
@ContributesBinding(AppScope::class)
22-
class RustTimelineEventTypeFilterFactory : TimelineEventTypeFilterFactory {
23-
override fun create(listStateEventType: List<StateEventType>): TimelineEventTypeFilter {
24-
return TimelineEventTypeFilter.exclude(
22+
class RustTimelineEventFilterFactory : TimelineEventFilterFactory {
23+
override fun create(listStateEventType: List<StateEventType>): TimelineEventFilter {
24+
return TimelineEventFilter.excludeEventTypes(
2525
listStateEventType.map { stateEventType ->
2626
FilterTimelineEventType.State(stateEventType.map())
2727
}

0 commit comments

Comments
 (0)