Send failure verified user : expose new methods on MatrixRoom.

This commit is contained in:
ganfra 2024-09-12 19:06:19 +02:00
parent d215978241
commit ff0ef5f093
3 changed files with 37 additions and 3 deletions

View file

@ -7,6 +7,7 @@
package io.element.android.libraries.matrix.api.room 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.EventId
import io.element.android.libraries.matrix.api.core.ProgressCallback import io.element.android.libraries.matrix.api.core.ProgressCallback
import io.element.android.libraries.matrix.api.core.RoomAlias import io.element.android.libraries.matrix.api.core.RoomAlias
@ -349,5 +350,9 @@ interface MatrixRoom : Closeable {
*/ */
suspend fun clearComposerDraft(): Result<Unit> 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() override fun close() = destroy()
} }

View file

@ -459,8 +459,8 @@ class RustMatrixRoom(
return liveTimeline.forwardEvent(eventId, roomIds) return liveTimeline.forwardEvent(eventId, roomIds)
} }
override suspend fun retrySendMessage(transactionId: TransactionId): Result<Unit> { override suspend fun retrySendMessage(transactionId: TransactionId): Result<Unit> = runCatching {
return Result.failure(UnsupportedOperationException("Not supported")) innerRoom.tryResend(transactionId.value)
} }
override suspend fun cancelSend(transactionId: TransactionId): Result<Boolean> { override suspend fun cancelSend(transactionId: TransactionId): Result<Boolean> {
@ -645,6 +645,23 @@ class RustMatrixRoom(
innerRoom.clearComposerDraft() 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( private fun createTimeline(
timeline: InnerTimeline, timeline: InnerTimeline,
mode: Timeline.Mode, mode: Timeline.Mode,

View file

@ -7,6 +7,7 @@
package io.element.android.libraries.matrix.test.room 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.EventId
import io.element.android.libraries.matrix.api.core.ProgressCallback import io.element.android.libraries.matrix.api.core.ProgressCallback
import io.element.android.libraries.matrix.api.core.RoomAlias import io.element.android.libraries.matrix.api.core.RoomAlias
@ -134,7 +135,10 @@ class FakeMatrixRoom(
private val loadComposerDraftLambda: () -> Result<ComposerDraft?> = { Result.success<ComposerDraft?>(null) }, private val loadComposerDraftLambda: () -> Result<ComposerDraft?> = { Result.success<ComposerDraft?>(null) },
private val clearComposerDraftLambda: () -> Result<Unit> = { Result.success(Unit) }, private val clearComposerDraftLambda: () -> Result<Unit> = { Result.success(Unit) },
private val subscribeToSyncLambda: () -> Unit = { lambdaError() }, 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) private val _roomInfoFlow: MutableSharedFlow<MatrixRoomInfo> = MutableSharedFlow(replay = 1)
override val roomInfoFlow: Flow<MatrixRoomInfo> = _roomInfoFlow override val roomInfoFlow: Flow<MatrixRoomInfo> = _roomInfoFlow
@ -492,6 +496,14 @@ class FakeMatrixRoom(
return getWidgetDriverResult(widgetSettings) 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) { fun givenRoomMembersState(state: MatrixRoomMembersState) {
membersStateFlow.value = state membersStateFlow.value = state
} }