From 961d0ecdbc46acfdc125475654c42e58f61b3a47 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 31 Mar 2023 12:04:50 +0200 Subject: [PATCH] Add Result + Dispatcher on SDK call. --- .../matrix/api/pusher/PushersService.kt | 2 +- .../libraries/matrix/impl/RustMatrixClient.kt | 5 ++- .../matrix/impl/pushers/RustPushersService.kt | 41 +++++++++++-------- .../matrix/test/pushers/FakePushersService.kt | 2 +- 4 files changed, 30 insertions(+), 20 deletions(-) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/pusher/PushersService.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/pusher/PushersService.kt index a868aeab85..ef2291f8ce 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/pusher/PushersService.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/pusher/PushersService.kt @@ -17,5 +17,5 @@ package io.element.android.libraries.matrix.api.pusher interface PushersService { - fun setHttpPusher(setHttpPusherData: SetHttpPusherData) + suspend fun setHttpPusher(setHttpPusherData: SetHttpPusherData): Result } 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 0fa5a668c8..bb4ec1c971 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 @@ -64,7 +64,10 @@ class RustMatrixClient constructor( override val sessionId: UserId = UserId(client.userId()) private val verificationService = RustSessionVerificationService() - private val pushersService = RustPushersService(client) + private val pushersService = RustPushersService( + client = client, + dispatchers = dispatchers, + ) private val notificationService = RustNotificationService(baseDirectory) private var slidingSyncUpdateJob: Job? = null diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/pushers/RustPushersService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/pushers/RustPushersService.kt index 39dd5c1d11..4eaafef12d 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/pushers/RustPushersService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/pushers/RustPushersService.kt @@ -16,8 +16,10 @@ package io.element.android.libraries.matrix.impl.pushers +import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.matrix.api.pusher.PushersService import io.element.android.libraries.matrix.api.pusher.SetHttpPusherData +import kotlinx.coroutines.withContext import org.matrix.rustcomponents.sdk.Client import org.matrix.rustcomponents.sdk.HttpPusherData import org.matrix.rustcomponents.sdk.PushFormat @@ -26,24 +28,29 @@ import org.matrix.rustcomponents.sdk.PusherKind class RustPushersService( private val client: Client, + private val dispatchers: CoroutineDispatchers ) : PushersService { - override fun setHttpPusher(setHttpPusherData: SetHttpPusherData) { - client.setPusher( - identifiers = PusherIdentifiers( - pushkey = setHttpPusherData.pushKey, - appId = setHttpPusherData.appId - ), - kind = PusherKind.Http( - data = HttpPusherData( - url = setHttpPusherData.url, - format = PushFormat.EVENT_ID_ONLY, - defaultPayload = setHttpPusherData.defaultPayload + override suspend fun setHttpPusher(setHttpPusherData: SetHttpPusherData): Result { + return withContext(dispatchers.io) { + runCatching { + client.setPusher( + identifiers = PusherIdentifiers( + pushkey = setHttpPusherData.pushKey, + appId = setHttpPusherData.appId + ), + kind = PusherKind.Http( + data = HttpPusherData( + url = setHttpPusherData.url, + format = PushFormat.EVENT_ID_ONLY, + defaultPayload = setHttpPusherData.defaultPayload + ) + ), + appDisplayName = setHttpPusherData.appDisplayName, + deviceDisplayName = setHttpPusherData.deviceDisplayName, + profileTag = setHttpPusherData.profileTag, + lang = setHttpPusherData.lang ) - ), - appDisplayName = setHttpPusherData.appDisplayName, - deviceDisplayName = setHttpPusherData.deviceDisplayName, - profileTag = setHttpPusherData.profileTag, - lang = setHttpPusherData.lang - ) + } + } } } diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/pushers/FakePushersService.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/pushers/FakePushersService.kt index b9f4580ee8..77087d132f 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/pushers/FakePushersService.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/pushers/FakePushersService.kt @@ -20,5 +20,5 @@ import io.element.android.libraries.matrix.api.pusher.PushersService import io.element.android.libraries.matrix.api.pusher.SetHttpPusherData class FakePushersService : PushersService { - override fun setHttpPusher(setHttpPusherData: SetHttpPusherData) = Unit + override suspend fun setHttpPusher(setHttpPusherData: SetHttpPusherData) = Result.success(Unit) }