Browse Source

Add Result + Dispatcher on SDK call.

test/jme/compound-poc
Benoit Marty 1 year ago committed by Benoit Marty
parent
commit
b27f6c6594
  1. 2
      libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/pusher/PushersService.kt
  2. 5
      libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt
  3. 41
      libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/pushers/RustPushersService.kt
  4. 2
      libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/pushers/FakePushersService.kt

2
libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/pusher/PushersService.kt

@ -17,5 +17,5 @@ @@ -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>
}

5
libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt

@ -64,7 +64,10 @@ class RustMatrixClient constructor( @@ -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

41
libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/pushers/RustPushersService.kt

@ -16,8 +16,10 @@ @@ -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 @@ -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
)
}
}
}
}

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

Loading…
Cancel
Save