From 65718b3e960c3631f540b4b0f0a1ca9aa235f9b3 Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Fri, 9 Aug 2024 12:42:15 +0200 Subject: [PATCH] Update the SDK bindings to `v0.2.39` (#3288) - Rework `RoomSyncSubscriber` to work with the new `RoomListService.subscribeToRooms` API. --- .idea/kotlinc.xml | 2 +- gradle/libs.versions.toml | 2 +- .../matrix/impl/room/RoomSyncSubscriber.kt | 43 +++++++++---------- .../roomlist/RoomSummaryListProcessorTest.kt | 4 +- 4 files changed, 25 insertions(+), 26 deletions(-) diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml index 148fdd2469..4cb7457249 100644 --- a/.idea/kotlinc.xml +++ b/.idea/kotlinc.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6378685636..712fa4139f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -163,7 +163,7 @@ jsoup = "org.jsoup:jsoup:1.18.1" appyx_core = { module = "com.bumble.appyx:core", version.ref = "appyx" } molecule-runtime = "app.cash.molecule:molecule-runtime:2.0.0" timber = "com.jakewharton.timber:timber:5.0.1" -matrix_sdk = "org.matrix.rustcomponents:sdk-android:0.2.38" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:0.2.39" 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" } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomSyncSubscriber.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomSyncSubscriber.kt index a52d3a87ed..b149f88006 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomSyncSubscriber.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RoomSyncSubscriber.kt @@ -51,23 +51,15 @@ class RoomSyncSubscriber( includeHeroes = false, ) - suspend fun subscribe(roomId: RoomId) = mutex.withLock { - withContext(dispatchers.io) { - try { - subscribeToRoom(roomId) - } catch (exception: Exception) { - Timber.e("Failed to subscribe to room $roomId") - } - } - } - - suspend fun batchSubscribe(roomIds: List) = mutex.withLock { - withContext(dispatchers.io) { - for (roomId in roomIds) { + suspend fun subscribe(roomId: RoomId) { + mutex.withLock { + withContext(dispatchers.io) { try { - subscribeToRoom(roomId) - } catch (cancellationException: CancellationException) { - throw cancellationException + if (!isSubscribedTo(roomId)) { + Timber.d("Subscribing to room $roomId}") + roomListService.subscribeToRooms(listOf(roomId.value), settings) + } + subscribedRoomIds.add(roomId) } catch (exception: Exception) { Timber.e("Failed to subscribe to room $roomId") } @@ -75,14 +67,21 @@ class RoomSyncSubscriber( } } - private fun subscribeToRoom(roomId: RoomId) { - if (!isSubscribedTo(roomId)) { - Timber.d("Subscribing to room $roomId}") - roomListService.room(roomId.value).use { roomListItem -> - roomListItem.subscribe(settings) + suspend fun batchSubscribe(roomIds: List) = mutex.withLock { + withContext(dispatchers.io) { + try { + val roomIdsToSubscribeTo = roomIds.filterNot { isSubscribedTo(it) } + if (roomIdsToSubscribeTo.isNotEmpty()) { + Timber.d("Subscribing to rooms: $roomIds") + roomListService.subscribeToRooms(roomIdsToSubscribeTo.map { it.value }, settings) + subscribedRoomIds.addAll(roomIds) + } + } catch (cancellationException: CancellationException) { + throw cancellationException + } catch (exception: Exception) { + Timber.e(exception, "Failed to subscribe to rooms: $roomIds") } } - subscribedRoomIds.add(roomId) } fun isSubscribedTo(roomId: RoomId): Boolean { diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessorTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessorTest.kt index 33d8a94bb5..abaae99397 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessorTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessorTest.kt @@ -189,6 +189,8 @@ class RoomSummaryListProcessorTest { override fun syncIndicator(delayBeforeShowingInMs: UInt, delayBeforeHidingInMs: UInt, listener: RoomListServiceSyncIndicatorListener): TaskHandle { return TaskHandle(Pointer.NULL) } + + override fun subscribeToRooms(roomIds: List, settings: RoomSubscription?) = Unit } } @@ -270,6 +272,4 @@ class FakeRoomListItem( override suspend fun latestEvent(): EventTimelineItem? { return latestEvent } - - override fun subscribe(settings: RoomSubscription?) = Unit }