Transform MessageEventType and StateEventType into sealed interfaces to handle the Custom variant, also add missing variants

This commit is contained in:
Jorge Martín
2025-12-22 10:09:37 +01:00
committed by Jorge Martin Espinosa
parent 63d205f8aa
commit 75f8c4f594
16 changed files with 230 additions and 164 deletions

View File

@@ -17,19 +17,19 @@ object TimelineConfig {
* Event types that will be filtered out from the timeline (i.e. not displayed).
*/
val excludedEvents = listOf(
StateEventType.CALL_MEMBER,
StateEventType.ROOM_ALIASES,
StateEventType.ROOM_CANONICAL_ALIAS,
StateEventType.ROOM_GUEST_ACCESS,
StateEventType.ROOM_HISTORY_VISIBILITY,
StateEventType.ROOM_JOIN_RULES,
StateEventType.ROOM_POWER_LEVELS,
StateEventType.ROOM_SERVER_ACL,
StateEventType.ROOM_TOMBSTONE,
StateEventType.SPACE_CHILD,
StateEventType.SPACE_PARENT,
StateEventType.POLICY_RULE_ROOM,
StateEventType.POLICY_RULE_SERVER,
StateEventType.POLICY_RULE_USER,
StateEventType.CallMember,
StateEventType.RoomAliases,
StateEventType.RoomCanonicalAlias,
StateEventType.RoomGuestAccess,
StateEventType.RoomHistoryVisibility,
StateEventType.RoomJoinRules,
StateEventType.RoomPowerLevels,
StateEventType.RoomServerAcl,
StateEventType.RoomTombstone,
StateEventType.SpaceChild,
StateEventType.SpaceParent,
StateEventType.PolicyRuleRoom,
StateEventType.PolicyRuleServer,
StateEventType.PolicyRuleUser,
)
}

View File

@@ -1236,7 +1236,7 @@ class MessagesPresenterTest {
) = FakeRoomPermissions(
canSendState = { type ->
when (type) {
StateEventType.CALL_MEMBER -> canStartCall
StateEventType.CallMember -> canStartCall
else -> lambdaError()
}
},

View File

@@ -230,7 +230,7 @@ class RoomCallStatePresenterTest {
return FakeRoomPermissions(
canSendState = { stateEvent ->
when (stateEvent) {
StateEventType.CALL_MEMBER -> canJoinCall
StateEventType.CallMember -> canJoinCall
else -> lambdaError()
}
}

View File

@@ -643,14 +643,14 @@ class RoomDetailsPresenterTest {
canRedactOwn = canRedactOwn,
canSendState = { eventType ->
when (eventType) {
StateEventType.ROOM_JOIN_RULES -> canChangeRoomAccess
StateEventType.ROOM_HISTORY_VISIBILITY -> canChangeHistoryVisibility
StateEventType.ROOM_ENCRYPTION -> canChangeEncryption
StateEventType.ROOM_CANONICAL_ALIAS -> canChangeRoomVisibility
StateEventType.ROOM_AVATAR -> canChangeAvatar
StateEventType.ROOM_NAME -> canChangeName
StateEventType.ROOM_TOPIC -> canChangeTopic
StateEventType.ROOM_POWER_LEVELS -> canChangePowerLevels
StateEventType.RoomJoinRules -> canChangeRoomAccess
StateEventType.RoomHistoryVisibility -> canChangeHistoryVisibility
StateEventType.RoomEncryption -> canChangeEncryption
StateEventType.RoomCanonicalAlias -> canChangeRoomVisibility
StateEventType.RoomAvatar -> canChangeAvatar
StateEventType.RoomName -> canChangeName
StateEventType.RoomTopic -> canChangeTopic
StateEventType.RoomPowerLevels -> canChangePowerLevels
else -> lambdaError()
}
}

View File

@@ -30,8 +30,8 @@ data class RoomDetailsEditPermissions(
fun RoomPermissions.roomDetailsEditPermissions(): RoomDetailsEditPermissions {
return RoomDetailsEditPermissions(
canEditName = canOwnUserSendState(StateEventType.ROOM_NAME),
canEditTopic = canOwnUserSendState(StateEventType.ROOM_TOPIC),
canEditAvatar = canOwnUserSendState(StateEventType.ROOM_AVATAR),
canEditName = canOwnUserSendState(StateEventType.RoomName),
canEditTopic = canOwnUserSendState(StateEventType.RoomTopic),
canEditAvatar = canOwnUserSendState(StateEventType.RoomAvatar),
)
}

View File

@@ -129,9 +129,9 @@ class RoomDetailsEditPresenterTest {
val room = aJoinedRoom(
canSendState = { stateEventType ->
when (stateEventType) {
StateEventType.ROOM_NAME -> true
StateEventType.ROOM_AVATAR -> false
StateEventType.ROOM_TOPIC -> false
StateEventType.RoomName -> true
StateEventType.RoomAvatar -> false
StateEventType.RoomTopic -> false
else -> lambdaError()
}
}
@@ -162,9 +162,9 @@ class RoomDetailsEditPresenterTest {
avatarUrl = AN_AVATAR_URL,
canSendState = { stateEventType ->
when (stateEventType) {
StateEventType.ROOM_NAME -> false
StateEventType.ROOM_AVATAR -> true
StateEventType.ROOM_TOPIC -> false
StateEventType.RoomName -> false
StateEventType.RoomAvatar -> true
StateEventType.RoomTopic -> false
else -> lambdaError()
}
}
@@ -194,9 +194,9 @@ class RoomDetailsEditPresenterTest {
avatarUrl = AN_AVATAR_URL,
canSendState = { stateEventType ->
when (stateEventType) {
StateEventType.ROOM_NAME -> false
StateEventType.ROOM_AVATAR -> false
StateEventType.ROOM_TOPIC -> true
StateEventType.RoomName -> false
StateEventType.RoomAvatar -> false
StateEventType.RoomTopic -> true
else -> lambdaError()
}
}

View File

@@ -44,9 +44,9 @@ data class SecurityAndPrivacyPermissions(
fun RoomPermissions.securityAndPrivacyPermissions(): SecurityAndPrivacyPermissions {
return SecurityAndPrivacyPermissions(
canChangeRoomAccess = canOwnUserSendState(StateEventType.ROOM_JOIN_RULES),
canChangeHistoryVisibility = canOwnUserSendState(StateEventType.ROOM_HISTORY_VISIBILITY),
canChangeEncryption = canOwnUserSendState(StateEventType.ROOM_ENCRYPTION),
canChangeRoomVisibility = canOwnUserSendState(StateEventType.ROOM_CANONICAL_ALIAS),
canChangeRoomAccess = canOwnUserSendState(StateEventType.RoomJoinRules),
canChangeHistoryVisibility = canOwnUserSendState(StateEventType.RoomHistoryVisibility),
canChangeEncryption = canOwnUserSendState(StateEventType.RoomEncryption),
canChangeRoomVisibility = canOwnUserSendState(StateEventType.RoomCanonicalAlias),
)
}

View File

@@ -387,10 +387,10 @@ class SecurityAndPrivacyPresenterTest {
return FakeRoomPermissions(
canSendState = { eventType ->
when (eventType) {
StateEventType.ROOM_JOIN_RULES -> canChangeRoomAccess
StateEventType.ROOM_HISTORY_VISIBILITY -> canChangeHistoryVisibility
StateEventType.ROOM_ENCRYPTION -> canChangeEncryption
StateEventType.ROOM_CANONICAL_ALIAS -> canChangeRoomVisibility
StateEventType.RoomJoinRules -> canChangeRoomAccess
StateEventType.RoomHistoryVisibility -> canChangeHistoryVisibility
StateEventType.RoomEncryption -> canChangeEncryption
StateEventType.RoomCanonicalAlias -> canChangeRoomVisibility
else -> lambdaError()
}
}

View File

@@ -134,7 +134,7 @@ class UserProfilePresenterTest {
roomPermissions = FakeRoomPermissions(
canSendState = { type ->
when (type) {
StateEventType.CALL_MEMBER -> canUserJoinCall
StateEventType.CallMember -> canUserJoinCall
else -> lambdaError()
}
}

View File

@@ -12,10 +12,21 @@ import androidx.compose.runtime.Immutable
@Immutable
sealed interface MessageEventType {
data object Audio : MessageEventType
data object Beacon : MessageEventType
data object CallAnswer : MessageEventType
data object CallCandidates : MessageEventType
data object CallInvite : MessageEventType
data object CallHangup : MessageEventType
data object CallCandidates : MessageEventType
data object CallNegotiate : MessageEventType
data object CallNotify : MessageEventType
data object CallReject : MessageEventType
data object CallSdpStreamMetadataChanged : MessageEventType
data object CallSelectAnswer : MessageEventType
data object Emote : MessageEventType
data object Encrypted : MessageEventType
data object File : MessageEventType
data object Image : MessageEventType
data object RtcNotification : MessageEventType
data object KeyVerificationReady : MessageEventType
data object KeyVerificationStart : MessageEventType
@@ -24,10 +35,13 @@ sealed interface MessageEventType {
data object KeyVerificationKey : MessageEventType
data object KeyVerificationMac : MessageEventType
data object KeyVerificationDone : MessageEventType
data object Location : MessageEventType
data object Message : MessageEventType
data object Reaction : MessageEventType
data object RoomEncrypted : MessageEventType
data object RoomMessage : MessageEventType
data object RoomRedaction : MessageEventType
data object RtcDecline : MessageEventType
data object Sticker : MessageEventType
data object PollEnd : MessageEventType
data object PollResponse : MessageEventType
@@ -35,5 +49,7 @@ sealed interface MessageEventType {
data object UnstablePollEnd : MessageEventType
data object UnstablePollResponse : MessageEventType
data object UnstablePollStart : MessageEventType
data object Video : MessageEventType
data object Voice : MessageEventType
data class Other(val type: String) : MessageEventType
}

View File

@@ -8,27 +8,33 @@
package io.element.android.libraries.matrix.api.room
enum class StateEventType {
POLICY_RULE_ROOM,
POLICY_RULE_SERVER,
POLICY_RULE_USER,
CALL_MEMBER,
ROOM_ALIASES,
ROOM_AVATAR,
ROOM_CANONICAL_ALIAS,
ROOM_CREATE,
ROOM_ENCRYPTION,
ROOM_GUEST_ACCESS,
ROOM_HISTORY_VISIBILITY,
ROOM_JOIN_RULES,
ROOM_MEMBER_EVENT,
ROOM_NAME,
ROOM_PINNED_EVENTS,
ROOM_POWER_LEVELS,
ROOM_SERVER_ACL,
ROOM_THIRD_PARTY_INVITE,
ROOM_TOMBSTONE,
ROOM_TOPIC,
SPACE_CHILD,
SPACE_PARENT
sealed interface StateEventType {
data object PolicyRuleRoom : StateEventType
data object PolicyRuleServer : StateEventType
data object PolicyRuleUser : StateEventType
data object CallMember : StateEventType
data object RoomAliases : StateEventType
data object RoomAvatar : StateEventType
data object RoomCanonicalAlias : StateEventType
data object RoomCreate : StateEventType
data object RoomEncryption : StateEventType
data object RoomGuestAccess : StateEventType
data object RoomHistoryVisibility : StateEventType
data object RoomJoinRules : StateEventType
data object RoomMemberEvent : StateEventType
data object RoomName : StateEventType
data object RoomPinnedEvents : StateEventType
data object RoomPowerLevels : StateEventType
data object RoomServerAcl : StateEventType
data object RoomThirdPartyInvite : StateEventType
data object RoomTombstone : StateEventType
data object RoomTopic : StateEventType
data object SpaceChild : StateEventType
data object SpaceParent : StateEventType
data object BeaconInfo : StateEventType
data object MemberHints : StateEventType
data object RoomImagePack : StateEventType
data object RoomLanguage : StateEventType
data class Custom(val type: String) : StateEventType
}

View File

@@ -136,7 +136,7 @@ interface RoomPermissions : AutoCloseable {
* a power levels state event.
*/
fun RoomPermissions.canEditRolesAndPermissions(): Boolean {
return canOwnUserSendState(StateEventType.ROOM_POWER_LEVELS)
return canOwnUserSendState(StateEventType.RoomPowerLevels)
}
/**
@@ -144,7 +144,7 @@ fun RoomPermissions.canEditRolesAndPermissions(): Boolean {
* a call member state event.
*/
fun RoomPermissions.canCall(): Boolean {
return canOwnUserSendState(StateEventType.CALL_MEMBER)
return canOwnUserSendState(StateEventType.CallMember)
}
fun <T> Result<RoomPermissions>.use(default: T, block: (RoomPermissions) -> T): T {

View File

@@ -12,11 +12,21 @@ import io.element.android.libraries.matrix.api.room.MessageEventType
import org.matrix.rustcomponents.sdk.MessageLikeEventType
fun MessageEventType.map(): MessageLikeEventType = when (this) {
MessageEventType.Audio -> MessageLikeEventType.Audio
MessageEventType.Beacon -> MessageLikeEventType.Beacon
MessageEventType.CallAnswer -> MessageLikeEventType.CallAnswer
MessageEventType.CallCandidates -> MessageLikeEventType.CallCandidates
MessageEventType.CallInvite -> MessageLikeEventType.CallInvite
MessageEventType.CallHangup -> MessageLikeEventType.CallHangup
MessageEventType.CallCandidates -> MessageLikeEventType.CallCandidates
MessageEventType.RtcNotification -> MessageLikeEventType.RtcNotification
MessageEventType.CallNegotiate -> MessageLikeEventType.CallNegotiate
MessageEventType.CallNotify -> MessageLikeEventType.CallNotify
MessageEventType.CallReject -> MessageLikeEventType.CallReject
MessageEventType.CallSdpStreamMetadataChanged -> MessageLikeEventType.CallSdpStreamMetadataChanged
MessageEventType.CallSelectAnswer -> MessageLikeEventType.CallSelectAnswer
MessageEventType.Emote -> MessageLikeEventType.Emote
MessageEventType.Encrypted -> MessageLikeEventType.Encrypted
MessageEventType.File -> MessageLikeEventType.File
MessageEventType.Image -> MessageLikeEventType.Image
MessageEventType.KeyVerificationReady -> MessageLikeEventType.KeyVerificationReady
MessageEventType.KeyVerificationStart -> MessageLikeEventType.KeyVerificationStart
MessageEventType.KeyVerificationCancel -> MessageLikeEventType.KeyVerificationCancel
@@ -24,17 +34,23 @@ fun MessageEventType.map(): MessageLikeEventType = when (this) {
MessageEventType.KeyVerificationKey -> MessageLikeEventType.KeyVerificationKey
MessageEventType.KeyVerificationMac -> MessageLikeEventType.KeyVerificationMac
MessageEventType.KeyVerificationDone -> MessageLikeEventType.KeyVerificationDone
MessageEventType.Location -> MessageLikeEventType.Location
MessageEventType.Message -> MessageLikeEventType.Message
MessageEventType.Reaction -> MessageLikeEventType.Reaction
MessageEventType.RoomEncrypted -> MessageLikeEventType.RoomEncrypted
MessageEventType.RoomMessage -> MessageLikeEventType.RoomMessage
MessageEventType.RoomRedaction -> MessageLikeEventType.RoomRedaction
MessageEventType.RtcDecline -> MessageLikeEventType.RtcDecline
MessageEventType.Sticker -> MessageLikeEventType.Sticker
MessageEventType.PollEnd -> MessageLikeEventType.PollEnd
MessageEventType.PollResponse -> MessageLikeEventType.PollResponse
MessageEventType.PollStart -> MessageLikeEventType.PollStart
MessageEventType.RtcNotification -> MessageLikeEventType.RtcNotification
MessageEventType.UnstablePollEnd -> MessageLikeEventType.UnstablePollEnd
MessageEventType.UnstablePollResponse -> MessageLikeEventType.UnstablePollResponse
MessageEventType.UnstablePollStart -> MessageLikeEventType.UnstablePollStart
MessageEventType.Video -> MessageLikeEventType.Video
MessageEventType.Voice -> MessageLikeEventType.Voice
is MessageEventType.Other -> MessageLikeEventType.Other(type)
}
@@ -62,5 +78,21 @@ fun MessageLikeEventType.map(): MessageEventType = when (this) {
MessageLikeEventType.UnstablePollEnd -> MessageEventType.UnstablePollEnd
MessageLikeEventType.UnstablePollResponse -> MessageEventType.UnstablePollResponse
MessageLikeEventType.UnstablePollStart -> MessageEventType.UnstablePollStart
MessageLikeEventType.Audio -> MessageEventType.Audio
MessageLikeEventType.Beacon -> MessageEventType.Beacon
MessageLikeEventType.CallNegotiate -> MessageEventType.CallNegotiate
MessageLikeEventType.CallNotify -> MessageEventType.CallNotify
MessageLikeEventType.CallReject -> MessageEventType.CallReject
MessageLikeEventType.CallSdpStreamMetadataChanged -> MessageEventType.CallSdpStreamMetadataChanged
MessageLikeEventType.CallSelectAnswer -> MessageEventType.CallSelectAnswer
MessageLikeEventType.Emote -> MessageEventType.Emote
MessageLikeEventType.Encrypted -> MessageEventType.Encrypted
MessageLikeEventType.File -> MessageEventType.File
MessageLikeEventType.Image -> MessageEventType.Image
MessageLikeEventType.Location -> MessageEventType.Location
MessageLikeEventType.Message -> MessageEventType.Message
MessageLikeEventType.RtcDecline -> MessageEventType.RtcDecline
MessageLikeEventType.Video -> MessageEventType.Video
MessageLikeEventType.Voice -> MessageEventType.Voice
is MessageLikeEventType.Other -> MessageEventType.Other(v1)
}

View File

@@ -12,51 +12,61 @@ import io.element.android.libraries.matrix.api.room.StateEventType
import org.matrix.rustcomponents.sdk.StateEventType as RustStateEventType
fun StateEventType.map(): RustStateEventType = when (this) {
StateEventType.POLICY_RULE_ROOM -> RustStateEventType.POLICY_RULE_ROOM
StateEventType.POLICY_RULE_SERVER -> RustStateEventType.POLICY_RULE_SERVER
StateEventType.POLICY_RULE_USER -> RustStateEventType.POLICY_RULE_USER
StateEventType.CALL_MEMBER -> RustStateEventType.CALL_MEMBER
StateEventType.ROOM_ALIASES -> RustStateEventType.ROOM_ALIASES
StateEventType.ROOM_AVATAR -> RustStateEventType.ROOM_AVATAR
StateEventType.ROOM_CANONICAL_ALIAS -> RustStateEventType.ROOM_CANONICAL_ALIAS
StateEventType.ROOM_CREATE -> RustStateEventType.ROOM_CREATE
StateEventType.ROOM_ENCRYPTION -> RustStateEventType.ROOM_ENCRYPTION
StateEventType.ROOM_GUEST_ACCESS -> RustStateEventType.ROOM_GUEST_ACCESS
StateEventType.ROOM_HISTORY_VISIBILITY -> RustStateEventType.ROOM_HISTORY_VISIBILITY
StateEventType.ROOM_JOIN_RULES -> RustStateEventType.ROOM_JOIN_RULES
StateEventType.ROOM_MEMBER_EVENT -> RustStateEventType.ROOM_MEMBER_EVENT
StateEventType.ROOM_NAME -> RustStateEventType.ROOM_NAME
StateEventType.ROOM_PINNED_EVENTS -> RustStateEventType.ROOM_PINNED_EVENTS
StateEventType.ROOM_POWER_LEVELS -> RustStateEventType.ROOM_POWER_LEVELS
StateEventType.ROOM_SERVER_ACL -> RustStateEventType.ROOM_SERVER_ACL
StateEventType.ROOM_THIRD_PARTY_INVITE -> RustStateEventType.ROOM_THIRD_PARTY_INVITE
StateEventType.ROOM_TOMBSTONE -> RustStateEventType.ROOM_TOMBSTONE
StateEventType.ROOM_TOPIC -> RustStateEventType.ROOM_TOPIC
StateEventType.SPACE_CHILD -> RustStateEventType.SPACE_CHILD
StateEventType.SPACE_PARENT -> RustStateEventType.SPACE_PARENT
StateEventType.PolicyRuleRoom -> RustStateEventType.PolicyRuleRoom
StateEventType.PolicyRuleServer -> RustStateEventType.PolicyRuleServer
StateEventType.PolicyRuleUser -> RustStateEventType.PolicyRuleUser
StateEventType.CallMember -> RustStateEventType.CallMember
StateEventType.RoomAliases -> RustStateEventType.RoomAliases
StateEventType.RoomAvatar -> RustStateEventType.RoomAvatar
StateEventType.RoomCanonicalAlias -> RustStateEventType.RoomCanonicalAlias
StateEventType.RoomCreate -> RustStateEventType.RoomCreate
StateEventType.RoomEncryption -> RustStateEventType.RoomEncryption
StateEventType.RoomGuestAccess -> RustStateEventType.RoomGuestAccess
StateEventType.RoomHistoryVisibility -> RustStateEventType.RoomHistoryVisibility
StateEventType.RoomJoinRules -> RustStateEventType.RoomJoinRules
StateEventType.RoomMemberEvent -> RustStateEventType.RoomMemberEvent
StateEventType.RoomName -> RustStateEventType.RoomName
StateEventType.RoomPinnedEvents -> RustStateEventType.RoomPinnedEvents
StateEventType.RoomPowerLevels -> RustStateEventType.RoomPowerLevels
StateEventType.RoomServerAcl -> RustStateEventType.RoomServerAcl
StateEventType.RoomThirdPartyInvite -> RustStateEventType.RoomThirdPartyInvite
StateEventType.RoomTombstone -> RustStateEventType.RoomTombstone
StateEventType.RoomTopic -> RustStateEventType.RoomTopic
StateEventType.SpaceChild -> RustStateEventType.SpaceChild
StateEventType.SpaceParent -> RustStateEventType.SpaceParent
StateEventType.BeaconInfo -> RustStateEventType.BeaconInfo
StateEventType.MemberHints -> RustStateEventType.MemberHints
StateEventType.RoomImagePack -> RustStateEventType.RoomImagePack
StateEventType.RoomLanguage -> RustStateEventType.RoomLanguage
is StateEventType.Custom -> RustStateEventType.Custom(type)
}
fun RustStateEventType.map(): StateEventType = when (this) {
RustStateEventType.POLICY_RULE_ROOM -> StateEventType.POLICY_RULE_ROOM
RustStateEventType.POLICY_RULE_SERVER -> StateEventType.POLICY_RULE_SERVER
RustStateEventType.POLICY_RULE_USER -> StateEventType.POLICY_RULE_USER
RustStateEventType.CALL_MEMBER -> StateEventType.CALL_MEMBER
RustStateEventType.ROOM_ALIASES -> StateEventType.ROOM_ALIASES
RustStateEventType.ROOM_AVATAR -> StateEventType.ROOM_AVATAR
RustStateEventType.ROOM_CANONICAL_ALIAS -> StateEventType.ROOM_CANONICAL_ALIAS
RustStateEventType.ROOM_CREATE -> StateEventType.ROOM_CREATE
RustStateEventType.ROOM_ENCRYPTION -> StateEventType.ROOM_ENCRYPTION
RustStateEventType.ROOM_GUEST_ACCESS -> StateEventType.ROOM_GUEST_ACCESS
RustStateEventType.ROOM_HISTORY_VISIBILITY -> StateEventType.ROOM_HISTORY_VISIBILITY
RustStateEventType.ROOM_JOIN_RULES -> StateEventType.ROOM_JOIN_RULES
RustStateEventType.ROOM_MEMBER_EVENT -> StateEventType.ROOM_MEMBER_EVENT
RustStateEventType.ROOM_NAME -> StateEventType.ROOM_NAME
RustStateEventType.ROOM_PINNED_EVENTS -> StateEventType.ROOM_PINNED_EVENTS
RustStateEventType.ROOM_POWER_LEVELS -> StateEventType.ROOM_POWER_LEVELS
RustStateEventType.ROOM_SERVER_ACL -> StateEventType.ROOM_SERVER_ACL
RustStateEventType.ROOM_THIRD_PARTY_INVITE -> StateEventType.ROOM_THIRD_PARTY_INVITE
RustStateEventType.ROOM_TOMBSTONE -> StateEventType.ROOM_TOMBSTONE
RustStateEventType.ROOM_TOPIC -> StateEventType.ROOM_TOPIC
RustStateEventType.SPACE_CHILD -> StateEventType.SPACE_CHILD
RustStateEventType.SPACE_PARENT -> StateEventType.SPACE_PARENT
RustStateEventType.PolicyRuleRoom -> StateEventType.PolicyRuleRoom
RustStateEventType.PolicyRuleServer -> StateEventType.PolicyRuleServer
RustStateEventType.PolicyRuleUser -> StateEventType.PolicyRuleUser
RustStateEventType.CallMember -> StateEventType.CallMember
RustStateEventType.RoomAliases -> StateEventType.RoomAliases
RustStateEventType.RoomAvatar -> StateEventType.RoomAvatar
RustStateEventType.RoomCanonicalAlias -> StateEventType.RoomCanonicalAlias
RustStateEventType.RoomCreate -> StateEventType.RoomCreate
RustStateEventType.RoomEncryption -> StateEventType.RoomEncryption
RustStateEventType.RoomGuestAccess -> StateEventType.RoomGuestAccess
RustStateEventType.RoomHistoryVisibility -> StateEventType.RoomHistoryVisibility
RustStateEventType.RoomJoinRules -> StateEventType.RoomJoinRules
RustStateEventType.RoomMemberEvent -> StateEventType.RoomMemberEvent
RustStateEventType.RoomName -> StateEventType.RoomName
RustStateEventType.RoomPinnedEvents -> StateEventType.RoomPinnedEvents
RustStateEventType.RoomPowerLevels -> StateEventType.RoomPowerLevels
RustStateEventType.RoomServerAcl -> StateEventType.RoomServerAcl
RustStateEventType.RoomThirdPartyInvite -> StateEventType.RoomThirdPartyInvite
RustStateEventType.RoomTombstone -> StateEventType.RoomTombstone
RustStateEventType.RoomTopic -> StateEventType.RoomTopic
RustStateEventType.SpaceChild -> StateEventType.SpaceChild
RustStateEventType.SpaceParent -> StateEventType.SpaceParent
RustStateEventType.BeaconInfo -> StateEventType.BeaconInfo
RustStateEventType.MemberHints -> StateEventType.MemberHints
RustStateEventType.RoomImagePack -> StateEventType.RoomImagePack
RustStateEventType.RoomLanguage -> StateEventType.RoomLanguage
is RustStateEventType.Custom -> StateEventType.Custom(value)
}

View File

@@ -32,7 +32,7 @@ import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.matrix.rustcomponents.sdk.NotificationClient
import org.matrix.rustcomponents.sdk.NotificationStatus
import org.matrix.rustcomponents.sdk.TimelineEventType
import org.matrix.rustcomponents.sdk.TimelineEventContent
class RustNotificationServiceTest {
@Test
@@ -58,9 +58,9 @@ class RustNotificationServiceTest {
@Test
fun `test mapping invalid item only drops that item`() = runTest {
val error = IllegalStateException("This event type is not supported")
val error = IllegalStateException("This event content is not supported")
val faultyEvent = object : FakeFfiTimelineEvent() {
override fun eventType(): TimelineEventType {
override fun content(): TimelineEventContent {
throw error
}
}

View File

@@ -16,53 +16,55 @@ import org.matrix.rustcomponents.sdk.StateEventType as RustStateEventType
class StateEventTypeTest {
@Test
fun `mapping Rust type should work`() {
assertThat(RustStateEventType.CALL_MEMBER.map()).isEqualTo(StateEventType.CALL_MEMBER)
assertThat(RustStateEventType.POLICY_RULE_ROOM.map()).isEqualTo(StateEventType.POLICY_RULE_ROOM)
assertThat(RustStateEventType.POLICY_RULE_SERVER.map()).isEqualTo(StateEventType.POLICY_RULE_SERVER)
assertThat(RustStateEventType.POLICY_RULE_USER.map()).isEqualTo(StateEventType.POLICY_RULE_USER)
assertThat(RustStateEventType.ROOM_ALIASES.map()).isEqualTo(StateEventType.ROOM_ALIASES)
assertThat(RustStateEventType.ROOM_AVATAR.map()).isEqualTo(StateEventType.ROOM_AVATAR)
assertThat(RustStateEventType.ROOM_CANONICAL_ALIAS.map()).isEqualTo(StateEventType.ROOM_CANONICAL_ALIAS)
assertThat(RustStateEventType.ROOM_CREATE.map()).isEqualTo(StateEventType.ROOM_CREATE)
assertThat(RustStateEventType.ROOM_ENCRYPTION.map()).isEqualTo(StateEventType.ROOM_ENCRYPTION)
assertThat(RustStateEventType.ROOM_GUEST_ACCESS.map()).isEqualTo(StateEventType.ROOM_GUEST_ACCESS)
assertThat(RustStateEventType.ROOM_HISTORY_VISIBILITY.map()).isEqualTo(StateEventType.ROOM_HISTORY_VISIBILITY)
assertThat(RustStateEventType.ROOM_JOIN_RULES.map()).isEqualTo(StateEventType.ROOM_JOIN_RULES)
assertThat(RustStateEventType.ROOM_MEMBER_EVENT.map()).isEqualTo(StateEventType.ROOM_MEMBER_EVENT)
assertThat(RustStateEventType.ROOM_NAME.map()).isEqualTo(StateEventType.ROOM_NAME)
assertThat(RustStateEventType.ROOM_PINNED_EVENTS.map()).isEqualTo(StateEventType.ROOM_PINNED_EVENTS)
assertThat(RustStateEventType.ROOM_POWER_LEVELS.map()).isEqualTo(StateEventType.ROOM_POWER_LEVELS)
assertThat(RustStateEventType.ROOM_SERVER_ACL.map()).isEqualTo(StateEventType.ROOM_SERVER_ACL)
assertThat(RustStateEventType.ROOM_THIRD_PARTY_INVITE.map()).isEqualTo(StateEventType.ROOM_THIRD_PARTY_INVITE)
assertThat(RustStateEventType.ROOM_TOMBSTONE.map()).isEqualTo(StateEventType.ROOM_TOMBSTONE)
assertThat(RustStateEventType.ROOM_TOPIC.map()).isEqualTo(StateEventType.ROOM_TOPIC)
assertThat(RustStateEventType.SPACE_CHILD.map()).isEqualTo(StateEventType.SPACE_CHILD)
assertThat(RustStateEventType.SPACE_PARENT.map()).isEqualTo(StateEventType.SPACE_PARENT)
assertThat(RustStateEventType.CallMember.map()).isEqualTo(StateEventType.CallMember)
assertThat(RustStateEventType.PolicyRuleRoom.map()).isEqualTo(StateEventType.PolicyRuleRoom)
assertThat(RustStateEventType.PolicyRuleServer.map()).isEqualTo(StateEventType.PolicyRuleServer)
assertThat(RustStateEventType.PolicyRuleUser.map()).isEqualTo(StateEventType.PolicyRuleUser)
assertThat(RustStateEventType.RoomAliases.map()).isEqualTo(StateEventType.RoomAliases)
assertThat(RustStateEventType.RoomAvatar.map()).isEqualTo(StateEventType.RoomAvatar)
assertThat(RustStateEventType.RoomCanonicalAlias.map()).isEqualTo(StateEventType.RoomCanonicalAlias)
assertThat(RustStateEventType.RoomCreate.map()).isEqualTo(StateEventType.RoomCreate)
assertThat(RustStateEventType.RoomEncryption.map()).isEqualTo(StateEventType.RoomEncryption)
assertThat(RustStateEventType.RoomGuestAccess.map()).isEqualTo(StateEventType.RoomGuestAccess)
assertThat(RustStateEventType.RoomHistoryVisibility.map()).isEqualTo(StateEventType.RoomHistoryVisibility)
assertThat(RustStateEventType.RoomJoinRules.map()).isEqualTo(StateEventType.RoomJoinRules)
assertThat(RustStateEventType.RoomMemberEvent.map()).isEqualTo(StateEventType.RoomMemberEvent)
assertThat(RustStateEventType.RoomName.map()).isEqualTo(StateEventType.RoomName)
assertThat(RustStateEventType.RoomPinnedEvents.map()).isEqualTo(StateEventType.RoomPinnedEvents)
assertThat(RustStateEventType.RoomPowerLevels.map()).isEqualTo(StateEventType.RoomPowerLevels)
assertThat(RustStateEventType.RoomServerAcl.map()).isEqualTo(StateEventType.RoomServerAcl)
assertThat(RustStateEventType.RoomThirdPartyInvite.map()).isEqualTo(StateEventType.RoomThirdPartyInvite)
assertThat(RustStateEventType.RoomTombstone.map()).isEqualTo(StateEventType.RoomTombstone)
assertThat(RustStateEventType.RoomTopic.map()).isEqualTo(StateEventType.RoomTopic)
assertThat(RustStateEventType.SpaceChild.map()).isEqualTo(StateEventType.SpaceChild)
assertThat(RustStateEventType.SpaceParent.map()).isEqualTo(StateEventType.SpaceParent)
assertThat(RustStateEventType.Custom("foo").map()).isEqualTo(StateEventType.Custom("foo"))
}
@Test
fun `mapping Kotlin type should work`() {
assertThat(StateEventType.CALL_MEMBER.map()).isEqualTo(RustStateEventType.CALL_MEMBER)
assertThat(StateEventType.POLICY_RULE_ROOM.map()).isEqualTo(RustStateEventType.POLICY_RULE_ROOM)
assertThat(StateEventType.POLICY_RULE_SERVER.map()).isEqualTo(RustStateEventType.POLICY_RULE_SERVER)
assertThat(StateEventType.POLICY_RULE_USER.map()).isEqualTo(RustStateEventType.POLICY_RULE_USER)
assertThat(StateEventType.ROOM_ALIASES.map()).isEqualTo(RustStateEventType.ROOM_ALIASES)
assertThat(StateEventType.ROOM_AVATAR.map()).isEqualTo(RustStateEventType.ROOM_AVATAR)
assertThat(StateEventType.ROOM_CANONICAL_ALIAS.map()).isEqualTo(RustStateEventType.ROOM_CANONICAL_ALIAS)
assertThat(StateEventType.ROOM_CREATE.map()).isEqualTo(RustStateEventType.ROOM_CREATE)
assertThat(StateEventType.ROOM_ENCRYPTION.map()).isEqualTo(RustStateEventType.ROOM_ENCRYPTION)
assertThat(StateEventType.ROOM_GUEST_ACCESS.map()).isEqualTo(RustStateEventType.ROOM_GUEST_ACCESS)
assertThat(StateEventType.ROOM_HISTORY_VISIBILITY.map()).isEqualTo(RustStateEventType.ROOM_HISTORY_VISIBILITY)
assertThat(StateEventType.ROOM_JOIN_RULES.map()).isEqualTo(RustStateEventType.ROOM_JOIN_RULES)
assertThat(StateEventType.ROOM_MEMBER_EVENT.map()).isEqualTo(RustStateEventType.ROOM_MEMBER_EVENT)
assertThat(StateEventType.ROOM_NAME.map()).isEqualTo(RustStateEventType.ROOM_NAME)
assertThat(StateEventType.ROOM_PINNED_EVENTS.map()).isEqualTo(RustStateEventType.ROOM_PINNED_EVENTS)
assertThat(StateEventType.ROOM_POWER_LEVELS.map()).isEqualTo(RustStateEventType.ROOM_POWER_LEVELS)
assertThat(StateEventType.ROOM_SERVER_ACL.map()).isEqualTo(RustStateEventType.ROOM_SERVER_ACL)
assertThat(StateEventType.ROOM_THIRD_PARTY_INVITE.map()).isEqualTo(RustStateEventType.ROOM_THIRD_PARTY_INVITE)
assertThat(StateEventType.ROOM_TOMBSTONE.map()).isEqualTo(RustStateEventType.ROOM_TOMBSTONE)
assertThat(StateEventType.ROOM_TOPIC.map()).isEqualTo(RustStateEventType.ROOM_TOPIC)
assertThat(StateEventType.SPACE_CHILD.map()).isEqualTo(RustStateEventType.SPACE_CHILD)
assertThat(StateEventType.SPACE_PARENT.map()).isEqualTo(RustStateEventType.SPACE_PARENT)
assertThat(StateEventType.CallMember.map()).isEqualTo(RustStateEventType.CallMember)
assertThat(StateEventType.PolicyRuleRoom.map()).isEqualTo(RustStateEventType.PolicyRuleRoom)
assertThat(StateEventType.PolicyRuleServer.map()).isEqualTo(RustStateEventType.PolicyRuleServer)
assertThat(StateEventType.PolicyRuleUser.map()).isEqualTo(RustStateEventType.PolicyRuleUser)
assertThat(StateEventType.RoomAliases.map()).isEqualTo(RustStateEventType.RoomAliases)
assertThat(StateEventType.RoomAvatar.map()).isEqualTo(RustStateEventType.RoomAvatar)
assertThat(StateEventType.RoomCanonicalAlias.map()).isEqualTo(RustStateEventType.RoomCanonicalAlias)
assertThat(StateEventType.RoomCreate.map()).isEqualTo(RustStateEventType.RoomCreate)
assertThat(StateEventType.RoomEncryption.map()).isEqualTo(RustStateEventType.RoomEncryption)
assertThat(StateEventType.RoomGuestAccess.map()).isEqualTo(RustStateEventType.RoomGuestAccess)
assertThat(StateEventType.RoomHistoryVisibility.map()).isEqualTo(RustStateEventType.RoomHistoryVisibility)
assertThat(StateEventType.RoomJoinRules.map()).isEqualTo(RustStateEventType.RoomJoinRules)
assertThat(StateEventType.RoomMemberEvent.map()).isEqualTo(RustStateEventType.RoomMemberEvent)
assertThat(StateEventType.RoomName.map()).isEqualTo(RustStateEventType.RoomName)
assertThat(StateEventType.RoomPinnedEvents.map()).isEqualTo(RustStateEventType.RoomPinnedEvents)
assertThat(StateEventType.RoomPowerLevels.map()).isEqualTo(RustStateEventType.RoomPowerLevels)
assertThat(StateEventType.RoomServerAcl.map()).isEqualTo(RustStateEventType.RoomServerAcl)
assertThat(StateEventType.RoomThirdPartyInvite.map()).isEqualTo(RustStateEventType.RoomThirdPartyInvite)
assertThat(StateEventType.RoomTombstone.map()).isEqualTo(RustStateEventType.RoomTombstone)
assertThat(StateEventType.RoomTopic.map()).isEqualTo(RustStateEventType.RoomTopic)
assertThat(StateEventType.SpaceChild.map()).isEqualTo(RustStateEventType.SpaceChild)
assertThat(StateEventType.SpaceParent.map()).isEqualTo(RustStateEventType.SpaceParent)
assertThat(StateEventType.Custom("foo").map()).isEqualTo(RustStateEventType.Custom("foo"))
}
}