Transform MessageEventType and StateEventType into sealed interfaces to handle the Custom variant, also add missing variants
This commit is contained in:
parent
0ed40c562d
commit
a8ffe46d99
16 changed files with 230 additions and 164 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue