Transform MessageEventType and StateEventType into sealed interfaces to handle the Custom variant, also add missing variants
This commit is contained in:
committed by
Jorge Martin Espinosa
parent
63d205f8aa
commit
75f8c4f594
@@ -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,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1236,7 +1236,7 @@ class MessagesPresenterTest {
|
||||
) = FakeRoomPermissions(
|
||||
canSendState = { type ->
|
||||
when (type) {
|
||||
StateEventType.CALL_MEMBER -> canStartCall
|
||||
StateEventType.CallMember -> canStartCall
|
||||
else -> lambdaError()
|
||||
}
|
||||
},
|
||||
|
||||
@@ -230,7 +230,7 @@ class RoomCallStatePresenterTest {
|
||||
return FakeRoomPermissions(
|
||||
canSendState = { stateEvent ->
|
||||
when (stateEvent) {
|
||||
StateEventType.CALL_MEMBER -> canJoinCall
|
||||
StateEventType.CallMember -> canJoinCall
|
||||
else -> lambdaError()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -134,7 +134,7 @@ class UserProfilePresenterTest {
|
||||
roomPermissions = FakeRoomPermissions(
|
||||
canSendState = { type ->
|
||||
when (type) {
|
||||
StateEventType.CALL_MEMBER -> canUserJoinCall
|
||||
StateEventType.CallMember -> canUserJoinCall
|
||||
else -> lambdaError()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user