Add Result + Dispatcher on SDK call.

This commit is contained in:
Benoit Marty 2023-03-31 12:04:50 +02:00 committed by Benoit Marty
parent eaff43de3a
commit 961d0ecdbc
4 changed files with 30 additions and 20 deletions

View file

@ -17,5 +17,5 @@
package io.element.android.libraries.matrix.api.pusher package io.element.android.libraries.matrix.api.pusher
interface PushersService { interface PushersService {
fun setHttpPusher(setHttpPusherData: SetHttpPusherData) suspend fun setHttpPusher(setHttpPusherData: SetHttpPusherData): Result<Unit>
} }

View file

@ -64,7 +64,10 @@ class RustMatrixClient constructor(
override val sessionId: UserId = UserId(client.userId()) override val sessionId: UserId = UserId(client.userId())
private val verificationService = RustSessionVerificationService() private val verificationService = RustSessionVerificationService()
private val pushersService = RustPushersService(client) private val pushersService = RustPushersService(
client = client,
dispatchers = dispatchers,
)
private val notificationService = RustNotificationService(baseDirectory) private val notificationService = RustNotificationService(baseDirectory)
private var slidingSyncUpdateJob: Job? = null private var slidingSyncUpdateJob: Job? = null

View file

@ -16,8 +16,10 @@
package io.element.android.libraries.matrix.impl.pushers 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.PushersService
import io.element.android.libraries.matrix.api.pusher.SetHttpPusherData import io.element.android.libraries.matrix.api.pusher.SetHttpPusherData
import kotlinx.coroutines.withContext
import org.matrix.rustcomponents.sdk.Client import org.matrix.rustcomponents.sdk.Client
import org.matrix.rustcomponents.sdk.HttpPusherData import org.matrix.rustcomponents.sdk.HttpPusherData
import org.matrix.rustcomponents.sdk.PushFormat import org.matrix.rustcomponents.sdk.PushFormat
@ -26,24 +28,29 @@ import org.matrix.rustcomponents.sdk.PusherKind
class RustPushersService( class RustPushersService(
private val client: Client, private val client: Client,
private val dispatchers: CoroutineDispatchers
) : PushersService { ) : PushersService {
override fun setHttpPusher(setHttpPusherData: SetHttpPusherData) { override suspend fun setHttpPusher(setHttpPusherData: SetHttpPusherData): Result<Unit> {
client.setPusher( return withContext(dispatchers.io) {
identifiers = PusherIdentifiers( runCatching {
pushkey = setHttpPusherData.pushKey, client.setPusher(
appId = setHttpPusherData.appId identifiers = PusherIdentifiers(
), pushkey = setHttpPusherData.pushKey,
kind = PusherKind.Http( appId = setHttpPusherData.appId
data = HttpPusherData( ),
url = setHttpPusherData.url, kind = PusherKind.Http(
format = PushFormat.EVENT_ID_ONLY, data = HttpPusherData(
defaultPayload = setHttpPusherData.defaultPayload 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
)
} }
} }

View file

@ -20,5 +20,5 @@ import io.element.android.libraries.matrix.api.pusher.PushersService
import io.element.android.libraries.matrix.api.pusher.SetHttpPusherData import io.element.android.libraries.matrix.api.pusher.SetHttpPusherData
class FakePushersService : PushersService { class FakePushersService : PushersService {
override fun setHttpPusher(setHttpPusherData: SetHttpPusherData) = Unit override suspend fun setHttpPusher(setHttpPusherData: SetHttpPusherData) = Result.success(Unit)
} }