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
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())
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

View File

@@ -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<Unit> {
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
)
}
}
}
}

View File

@@ -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)
}