From d3a86bffee0b0dabc57bfd60fa1b9cdfb2c93a3d Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 12 Jul 2023 16:05:36 +0200 Subject: [PATCH] Update rust sdk to 0.1.31: new notification api --- .../android/libraries/matrix/impl/RustMatrixClient.kt | 8 ++++++-- .../matrix/impl/notification/NotificationMapper.kt | 4 ++-- .../impl/notification/RustNotificationService.kt | 10 ++++++---- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt index 75beba0901..e72dbad47f 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt @@ -94,8 +94,11 @@ class RustMatrixClient constructor( client = client, dispatchers = dispatchers, ) - - private val notificationService = RustNotificationService(client) + private val notificationClient = client.notificationClient().use { builder -> + builder.finish() + } + + private val notificationService = RustNotificationService(notificationClient) private val clientDelegate = object : ClientDelegate { override fun didReceiveAuthError(isSoftLogout: Boolean) { @@ -250,6 +253,7 @@ class RustMatrixClient constructor( client.setDelegate(null) verificationService.destroy() roomListService.destroy() + notificationClient.destroy() client.destroy() } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/NotificationMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/NotificationMapper.kt index 957f2ff7b9..07acb7fec5 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/NotificationMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/NotificationMapper.kt @@ -27,12 +27,12 @@ import org.matrix.rustcomponents.sdk.use class NotificationMapper { private val timelineEventMapper = TimelineEventMapper() - fun map(notificationItem: NotificationItem): NotificationData { + fun map(roomId: RoomId, notificationItem: NotificationItem): NotificationData { return notificationItem.use { item -> NotificationData( senderId = UserId(item.event.senderId()), eventId = EventId(item.event.eventId()), - roomId = RoomId(item.roomInfo.id), + roomId = roomId, senderAvatarUrl = item.senderInfo.avatarUrl, senderDisplayName = item.senderInfo.displayName, roomAvatarUrl = item.roomInfo.avatarUrl ?: item.senderInfo.avatarUrl.takeIf { item.roomInfo.isDirect }, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/RustNotificationService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/RustNotificationService.kt index 7d523abdc7..92c996049e 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/RustNotificationService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/RustNotificationService.kt @@ -21,11 +21,11 @@ import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.notification.NotificationData import io.element.android.libraries.matrix.api.notification.NotificationService -import org.matrix.rustcomponents.sdk.Client +import org.matrix.rustcomponents.sdk.NotificationClient import org.matrix.rustcomponents.sdk.use class RustNotificationService( - private val client: Client, + private val notificationClient: NotificationClient, ) : NotificationService { private val notificationMapper: NotificationMapper = NotificationMapper() @@ -36,8 +36,10 @@ class RustNotificationService( filterByPushRules: Boolean, ): Result { return runCatching { - val item = client.getNotificationItem(roomId.value, eventId.value, filterByPushRules) - item?.use(notificationMapper::map) + val item = notificationClient.getNotification(roomId.value, eventId.value) + item?.use { + notificationMapper.map(roomId, it) + } } } }