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 0ed40c562d
commit a8ffe46d99
16 changed files with 230 additions and 164 deletions

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)
}