Update SDK bindings version to 0.2.62 and fix SendHandle usages (#3876)
This commit is contained in:
parent
1b33e1ac31
commit
56fe177c31
26 changed files with 135 additions and 59 deletions
|
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* Copyright 2024 New Vector Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* Please see LICENSE in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.libraries.matrix.impl.core
|
||||
|
||||
import io.element.android.libraries.matrix.api.core.SendHandle
|
||||
|
||||
class RustSendHandle(
|
||||
val inner: org.matrix.rustcomponents.sdk.SendHandle,
|
||||
) : SendHandle {
|
||||
override suspend fun retry(): Result<Unit> {
|
||||
return runCatching {
|
||||
inner.tryResend()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -8,11 +8,12 @@
|
|||
package io.element.android.libraries.matrix.impl.room
|
||||
|
||||
import io.element.android.libraries.matrix.api.room.RoomType
|
||||
import org.matrix.rustcomponents.sdk.RoomType as RustRoomType
|
||||
|
||||
fun String?.toRoomType(): RoomType {
|
||||
fun RustRoomType.map(): RoomType {
|
||||
return when (this) {
|
||||
null -> RoomType.Room
|
||||
"m.space" -> RoomType.Space
|
||||
else -> RoomType.Other(this)
|
||||
RustRoomType.Room -> RoomType.Room
|
||||
RustRoomType.Space -> RoomType.Space
|
||||
is RustRoomType.Custom -> RoomType.Other(this.value)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ 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
|
||||
import io.element.android.libraries.matrix.api.core.RoomId
|
||||
import io.element.android.libraries.matrix.api.core.SendHandle
|
||||
import io.element.android.libraries.matrix.api.core.SessionId
|
||||
import io.element.android.libraries.matrix.api.core.TransactionId
|
||||
import io.element.android.libraries.matrix.api.core.UserId
|
||||
|
|
@ -45,6 +46,7 @@ import io.element.android.libraries.matrix.api.timeline.Timeline
|
|||
import io.element.android.libraries.matrix.api.timeline.item.event.EventOrTransactionId
|
||||
import io.element.android.libraries.matrix.api.widget.MatrixWidgetDriver
|
||||
import io.element.android.libraries.matrix.api.widget.MatrixWidgetSettings
|
||||
import io.element.android.libraries.matrix.impl.core.RustSendHandle
|
||||
import io.element.android.libraries.matrix.impl.mapper.map
|
||||
import io.element.android.libraries.matrix.impl.room.draft.into
|
||||
import io.element.android.libraries.matrix.impl.room.member.RoomMemberListFetcher
|
||||
|
|
@ -481,10 +483,6 @@ class RustMatrixRoom(
|
|||
return liveTimeline.forwardEvent(eventId, roomIds)
|
||||
}
|
||||
|
||||
override suspend fun retrySendMessage(transactionId: TransactionId): Result<Unit> = runCatching {
|
||||
innerRoom.tryResend(transactionId.value)
|
||||
}
|
||||
|
||||
override suspend fun cancelSend(transactionId: TransactionId): Result<Unit> {
|
||||
return liveTimeline.cancelSend(transactionId)
|
||||
}
|
||||
|
|
@ -671,19 +669,19 @@ class RustMatrixRoom(
|
|||
innerRoom.clearComposerDraft()
|
||||
}
|
||||
|
||||
override suspend fun ignoreDeviceTrustAndResend(devices: Map<UserId, List<DeviceId>>, transactionId: TransactionId) = runCatching {
|
||||
override suspend fun ignoreDeviceTrustAndResend(devices: Map<UserId, List<DeviceId>>, sendHandle: SendHandle) = runCatching {
|
||||
innerRoom.ignoreDeviceTrustAndResend(
|
||||
devices = devices.entries.associate { entry ->
|
||||
entry.key.value to entry.value.map { it.value }
|
||||
},
|
||||
transactionId = transactionId.value
|
||||
sendHandle = (sendHandle as RustSendHandle).inner,
|
||||
)
|
||||
}
|
||||
|
||||
override suspend fun withdrawVerificationAndResend(userIds: List<UserId>, transactionId: TransactionId) = runCatching {
|
||||
override suspend fun withdrawVerificationAndResend(userIds: List<UserId>, sendHandle: SendHandle) = runCatching {
|
||||
innerRoom.withdrawVerificationAndResend(
|
||||
userIds = userIds.map { it.value },
|
||||
transactionId = transactionId.value
|
||||
sendHandle = (sendHandle as RustSendHandle).inner,
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ package io.element.android.libraries.matrix.impl.room.preview
|
|||
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||
import io.element.android.libraries.matrix.api.core.RoomId
|
||||
import io.element.android.libraries.matrix.api.room.preview.RoomPreviewInfo
|
||||
import io.element.android.libraries.matrix.impl.room.toRoomType
|
||||
import io.element.android.libraries.matrix.impl.room.map
|
||||
import org.matrix.rustcomponents.sdk.JoinRule
|
||||
import org.matrix.rustcomponents.sdk.Membership
|
||||
import org.matrix.rustcomponents.sdk.RoomPreviewInfo as RustRoomPreviewInfo
|
||||
|
|
@ -24,7 +24,7 @@ object RoomPreviewInfoMapper {
|
|||
topic = info.topic,
|
||||
avatarUrl = info.avatarUrl,
|
||||
numberOfJoinedMembers = info.numJoinedMembers.toLong(),
|
||||
roomType = info.roomType.toRoomType(),
|
||||
roomType = info.roomType.map(),
|
||||
isHistoryWorldReadable = info.isHistoryWorldReadable,
|
||||
isJoined = info.membership == Membership.JOINED,
|
||||
isInvited = info.membership == Membership.INVITED,
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ class RustRoomDirectoryList(
|
|||
|
||||
override suspend fun filter(filter: String?, batchSize: Int, viaServerName: String?): Result<Unit> {
|
||||
return execute {
|
||||
inner.search(filter = filter, batchSize = batchSize.toUInt(), viaServerName = viaServerName)
|
||||
inner.search(filter = filter, batchSize = batchSize.toUInt(), viaServerName = null)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import io.element.android.libraries.matrix.api.timeline.item.event.ProfileTimeli
|
|||
import io.element.android.libraries.matrix.api.timeline.item.event.ReactionSender
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.Receipt
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.TimelineItemEventOrigin
|
||||
import io.element.android.libraries.matrix.impl.core.RustSendHandle
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
import kotlinx.collections.immutable.persistentListOf
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
|
|
@ -56,6 +57,7 @@ class EventTimelineItemMapper(
|
|||
origin = origin?.map(),
|
||||
timelineItemDebugInfoProvider = { lazyProvider.debugInfo().map() },
|
||||
messageShieldProvider = { strict -> lazyProvider.getShields(strict)?.map() },
|
||||
sendHandleProvider = { lazyProvider.getSendHandle()?.let(::RustSendHandle) }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import io.element.android.libraries.matrix.test.A_ROOM_ID
|
|||
import org.matrix.rustcomponents.sdk.JoinRule
|
||||
import org.matrix.rustcomponents.sdk.Membership
|
||||
import org.matrix.rustcomponents.sdk.RoomPreviewInfo
|
||||
import org.matrix.rustcomponents.sdk.RoomType
|
||||
|
||||
internal fun aRustRoomPreviewInfo(
|
||||
canonicalAlias: String? = A_ROOM_ALIAS.value,
|
||||
|
|
@ -25,7 +26,9 @@ internal fun aRustRoomPreviewInfo(
|
|||
topic = "topic",
|
||||
avatarUrl = "avatarUrl",
|
||||
numJoinedMembers = 1u,
|
||||
roomType = null,
|
||||
numActiveMembers = 1u,
|
||||
isDirect = false,
|
||||
roomType = RoomType.Room,
|
||||
isHistoryWorldReadable = true,
|
||||
membership = membership,
|
||||
joinRule = joinRule,
|
||||
|
|
|
|||
|
|
@ -29,7 +29,6 @@ class FakeRustClientBuilder : ClientBuilder(NoPointer) {
|
|||
override fun disableBuiltInRootCertificates() = this
|
||||
override fun roomDecryptionTrustRequirement(trustRequirement: TrustRequirement) = this
|
||||
override fun disableSslVerification() = this
|
||||
override fun enableCrossProcessRefreshLock(processId: String, sessionDelegate: ClientSessionDelegate) = this
|
||||
override fun homeserverUrl(url: String) = this
|
||||
override fun passphrase(passphrase: String?) = this
|
||||
override fun proxy(url: String) = this
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import io.element.android.libraries.matrix.impl.fixtures.factories.anEventTimeli
|
|||
import org.matrix.rustcomponents.sdk.EventTimelineItemDebugInfo
|
||||
import org.matrix.rustcomponents.sdk.LazyTimelineItemProvider
|
||||
import org.matrix.rustcomponents.sdk.NoPointer
|
||||
import org.matrix.rustcomponents.sdk.SendHandle
|
||||
import org.matrix.rustcomponents.sdk.ShieldState
|
||||
|
||||
class FakeRustLazyTimelineItemProvider(
|
||||
|
|
@ -19,4 +20,5 @@ class FakeRustLazyTimelineItemProvider(
|
|||
) : LazyTimelineItemProvider(NoPointer) {
|
||||
override fun getShields(strict: Boolean) = shieldsState
|
||||
override fun debugInfo() = debugInfo
|
||||
override fun getSendHandle(): SendHandle? = null
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,12 +8,13 @@ package io.element.android.libraries.matrix.impl.room
|
|||
|
||||
import io.element.android.libraries.matrix.api.room.RoomType
|
||||
import org.junit.Test
|
||||
import org.matrix.rustcomponents.sdk.RoomType as RustRoomType
|
||||
|
||||
class RoomTypeKtTest {
|
||||
@Test
|
||||
fun toRoomType() {
|
||||
assert(null.toRoomType() == RoomType.Room)
|
||||
assert("m.space".toRoomType() == RoomType.Space)
|
||||
assert("m.other".toRoomType() == RoomType.Other("m.other"))
|
||||
assert(RustRoomType.Room.map() == RoomType.Room)
|
||||
assert(RustRoomType.Space.map() == RoomType.Space)
|
||||
assert(RustRoomType.Custom("m.other").map() == RoomType.Other("m.other"))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue