Skip to content

Commit de933b1

Browse files
committed
Send failure verified user : expose new methods on MatrixRoom.
1 parent e0bc026 commit de933b1

File tree

3 files changed

+37
-3
lines changed
  • libraries/matrix
    • api/src/main/kotlin/io/element/android/libraries/matrix/api/room
    • impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room
    • test/src/main/kotlin/io/element/android/libraries/matrix/test/room

3 files changed

+37
-3
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
package io.element.android.libraries.matrix.api.room
99

10+
import io.element.android.libraries.matrix.api.core.DeviceId
1011
import io.element.android.libraries.matrix.api.core.EventId
1112
import io.element.android.libraries.matrix.api.core.ProgressCallback
1213
import io.element.android.libraries.matrix.api.core.RoomAlias
@@ -349,5 +350,9 @@ interface MatrixRoom : Closeable {
349350
*/
350351
suspend fun clearComposerDraft(): Result<Unit>
351352

353+
suspend fun ignoreDeviceTrustAndResend(devices: Map<UserId, List<DeviceId>>, transactionId: TransactionId): Result<Unit>
354+
suspend fun withdrawVerificationAndResend(userIds: List<UserId>, transactionId: TransactionId): Result<Unit>
355+
352356
override fun close() = destroy()
357+
353358
}

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

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -459,8 +459,8 @@ class RustMatrixRoom(
459459
return liveTimeline.forwardEvent(eventId, roomIds)
460460
}
461461

462-
override suspend fun retrySendMessage(transactionId: TransactionId): Result<Unit> {
463-
return Result.failure(UnsupportedOperationException("Not supported"))
462+
override suspend fun retrySendMessage(transactionId: TransactionId): Result<Unit> = runCatching {
463+
innerRoom.tryResend(transactionId.value)
464464
}
465465

466466
override suspend fun cancelSend(transactionId: TransactionId): Result<Boolean> {
@@ -645,6 +645,23 @@ class RustMatrixRoom(
645645
innerRoom.clearComposerDraft()
646646
}
647647

648+
override suspend fun ignoreDeviceTrustAndResend(devices: Map<UserId, List<DeviceId>>, transactionId: TransactionId) = runCatching {
649+
innerRoom.ignoreDeviceTrustAndResend(
650+
devices = devices
651+
.entries.associate { entry ->
652+
entry.key.value to entry.value.map { it.value }
653+
},
654+
transactionId = transactionId.value
655+
)
656+
}
657+
658+
override suspend fun withdrawVerificationAndResend(userIds: List<UserId>, transactionId: TransactionId) = runCatching {
659+
innerRoom.withdrawVerificationAndResend(
660+
userIds = userIds.map { it.value },
661+
transactionId = transactionId.value
662+
)
663+
}
664+
648665
private fun createTimeline(
649666
timeline: InnerTimeline,
650667
mode: Timeline.Mode,

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
package io.element.android.libraries.matrix.test.room
99

10+
import io.element.android.libraries.matrix.api.core.DeviceId
1011
import io.element.android.libraries.matrix.api.core.EventId
1112
import io.element.android.libraries.matrix.api.core.ProgressCallback
1213
import io.element.android.libraries.matrix.api.core.RoomAlias
@@ -134,7 +135,10 @@ class FakeMatrixRoom(
134135
private val loadComposerDraftLambda: () -> Result<ComposerDraft?> = { Result.success<ComposerDraft?>(null) },
135136
private val clearComposerDraftLambda: () -> Result<Unit> = { Result.success(Unit) },
136137
private val subscribeToSyncLambda: () -> Unit = { lambdaError() },
137-
) : MatrixRoom {
138+
private val ignoreDeviceTrustAndResendResult: (Map<UserId, List<DeviceId>>, TransactionId) -> Result<Unit> = { _, _ -> lambdaError() },
139+
private val withdrawVerificationAndResendResult: (List<UserId>, TransactionId) -> Result<Unit> = { _, _ -> lambdaError() },
140+
141+
) : MatrixRoom {
138142
private val _roomInfoFlow: MutableSharedFlow<MatrixRoomInfo> = MutableSharedFlow(replay = 1)
139143
override val roomInfoFlow: Flow<MatrixRoomInfo> = _roomInfoFlow
140144

@@ -492,6 +496,14 @@ class FakeMatrixRoom(
492496
return getWidgetDriverResult(widgetSettings)
493497
}
494498

499+
override suspend fun ignoreDeviceTrustAndResend(devices: Map<UserId, List<DeviceId>>, transactionId: TransactionId): Result<Unit> {
500+
return ignoreDeviceTrustAndResendResult(devices, transactionId)
501+
}
502+
503+
override suspend fun withdrawVerificationAndResend(userIds: List<UserId>, transactionId: TransactionId): Result<Unit> {
504+
return withdrawVerificationAndResendResult(userIds, transactionId)
505+
}
506+
495507
fun givenRoomMembersState(state: MatrixRoomMembersState) {
496508
membersStateFlow.value = state
497509
}

0 commit comments

Comments
 (0)