Send state : introduce Failed.VerifiedUser interface.

This commit is contained in:
ganfra 2024-09-13 11:43:41 +02:00
parent ff0ef5f093
commit ba70fbb77e
2 changed files with 11 additions and 4 deletions

View file

@ -8,6 +8,7 @@
package io.element.android.libraries.matrix.api.timeline.item.event package io.element.android.libraries.matrix.api.timeline.item.event
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
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.UserId import io.element.android.libraries.matrix.api.core.UserId
@ -18,21 +19,24 @@ sealed interface LocalEventSendState {
data class Unknown(val error: String) : Failed data class Unknown(val error: String) : Failed
data object CrossSigningNotSetup : Failed data object CrossSigningNotSetup : Failed
data object SendingFromUnverifiedDevice : Failed data object SendingFromUnverifiedDevice : Failed
sealed interface VerifiedUser : Failed
data class VerifiedUserHasUnsignedDevice( data class VerifiedUserHasUnsignedDevice(
/** /**
* The unsigned devices belonging to verified users. A map from user ID * The unsigned devices belonging to verified users. A map from user ID
* to a list of device IDs. * to a list of device IDs.
*/ */
val devices: Map<UserId, List<String>> val devices: Map<UserId, List<DeviceId>>
) : Failed ) : VerifiedUser
data class VerifiedUserChangedIdentity( data class VerifiedUserChangedIdentity(
/** /**
* The users that were previously verified but are no longer. * The users that were previously verified but are no longer.
*/ */
val users: List<UserId> val users: List<UserId>
) : Failed ) : VerifiedUser
} }
data class Sent( data class Sent(
val eventId: EventId val eventId: EventId
) : LocalEventSendState ) : LocalEventSendState

View file

@ -7,6 +7,7 @@
package io.element.android.libraries.matrix.impl.timeline.item.event package io.element.android.libraries.matrix.impl.timeline.item.event
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.TransactionId import io.element.android.libraries.matrix.api.core.TransactionId
import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.core.UserId
@ -87,7 +88,9 @@ fun RustEventSendState?.map(): LocalEventSendState? {
} }
is RustEventSendState.VerifiedUserHasUnsignedDevice -> { is RustEventSendState.VerifiedUserHasUnsignedDevice -> {
LocalEventSendState.Failed.VerifiedUserHasUnsignedDevice( LocalEventSendState.Failed.VerifiedUserHasUnsignedDevice(
devices = devices.mapKeys { UserId(it.key) } devices = devices.entries.associate { entry ->
UserId(entry.key) to entry.value.map { DeviceId(it) }
}
) )
} }
EventSendState.CrossSigningNotSetup -> LocalEventSendState.Failed.CrossSigningNotSetup EventSendState.CrossSigningNotSetup -> LocalEventSendState.Failed.CrossSigningNotSetup