Browse Source

Send failure verified user : expose new methods on MatrixRoom.

pull/3461/head
ganfra 1 month ago
parent
commit
de933b1f34
  1. 5
      libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoom.kt
  2. 21
      libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt
  3. 14
      libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt

5
libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoom.kt

@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
package io.element.android.libraries.matrix.api.room
import io.element.android.libraries.matrix.api.core.DeviceId
import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.core.ProgressCallback
import io.element.android.libraries.matrix.api.core.RoomAlias
@ -349,5 +350,9 @@ interface MatrixRoom : Closeable { @@ -349,5 +350,9 @@ interface MatrixRoom : Closeable {
*/
suspend fun clearComposerDraft(): Result<Unit>
suspend fun ignoreDeviceTrustAndResend(devices: Map<UserId, List<DeviceId>>, transactionId: TransactionId): Result<Unit>
suspend fun withdrawVerificationAndResend(userIds: List<UserId>, transactionId: TransactionId): Result<Unit>
override fun close() = destroy()
}

21
libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt

@ -459,8 +459,8 @@ class RustMatrixRoom( @@ -459,8 +459,8 @@ class RustMatrixRoom(
return liveTimeline.forwardEvent(eventId, roomIds)
}
override suspend fun retrySendMessage(transactionId: TransactionId): Result<Unit> {
return Result.failure(UnsupportedOperationException("Not supported"))
override suspend fun retrySendMessage(transactionId: TransactionId): Result<Unit> = runCatching {
innerRoom.tryResend(transactionId.value)
}
override suspend fun cancelSend(transactionId: TransactionId): Result<Boolean> {
@ -645,6 +645,23 @@ class RustMatrixRoom( @@ -645,6 +645,23 @@ class RustMatrixRoom(
innerRoom.clearComposerDraft()
}
override suspend fun ignoreDeviceTrustAndResend(devices: Map<UserId, List<DeviceId>>, transactionId: TransactionId) = runCatching {
innerRoom.ignoreDeviceTrustAndResend(
devices = devices
.entries.associate { entry ->
entry.key.value to entry.value.map { it.value }
},
transactionId = transactionId.value
)
}
override suspend fun withdrawVerificationAndResend(userIds: List<UserId>, transactionId: TransactionId) = runCatching {
innerRoom.withdrawVerificationAndResend(
userIds = userIds.map { it.value },
transactionId = transactionId.value
)
}
private fun createTimeline(
timeline: InnerTimeline,
mode: Timeline.Mode,

14
libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt

@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
package io.element.android.libraries.matrix.test.room
import io.element.android.libraries.matrix.api.core.DeviceId
import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.core.ProgressCallback
import io.element.android.libraries.matrix.api.core.RoomAlias
@ -134,7 +135,10 @@ class FakeMatrixRoom( @@ -134,7 +135,10 @@ class FakeMatrixRoom(
private val loadComposerDraftLambda: () -> Result<ComposerDraft?> = { Result.success<ComposerDraft?>(null) },
private val clearComposerDraftLambda: () -> Result<Unit> = { Result.success(Unit) },
private val subscribeToSyncLambda: () -> Unit = { lambdaError() },
) : MatrixRoom {
private val ignoreDeviceTrustAndResendResult: (Map<UserId, List<DeviceId>>, TransactionId) -> Result<Unit> = { _, _ -> lambdaError() },
private val withdrawVerificationAndResendResult: (List<UserId>, TransactionId) -> Result<Unit> = { _, _ -> lambdaError() },
) : MatrixRoom {
private val _roomInfoFlow: MutableSharedFlow<MatrixRoomInfo> = MutableSharedFlow(replay = 1)
override val roomInfoFlow: Flow<MatrixRoomInfo> = _roomInfoFlow
@ -492,6 +496,14 @@ class FakeMatrixRoom( @@ -492,6 +496,14 @@ class FakeMatrixRoom(
return getWidgetDriverResult(widgetSettings)
}
override suspend fun ignoreDeviceTrustAndResend(devices: Map<UserId, List<DeviceId>>, transactionId: TransactionId): Result<Unit> {
return ignoreDeviceTrustAndResendResult(devices, transactionId)
}
override suspend fun withdrawVerificationAndResend(userIds: List<UserId>, transactionId: TransactionId): Result<Unit> {
return withdrawVerificationAndResendResult(userIds, transactionId)
}
fun givenRoomMembersState(state: MatrixRoomMembersState) {
membersStateFlow.value = state
}

Loading…
Cancel
Save