[MatrixSDK] map the remaining EventContents
This commit is contained in:
parent
2dc44250fb
commit
ccde8adef3
7 changed files with 78 additions and 23 deletions
|
|
@ -39,7 +39,7 @@ import org.matrix.rustcomponents.sdk.MessageFormat as RustMessageFormat
|
|||
class EventMessageMapper {
|
||||
|
||||
fun map(message: Message): MessageContent = message.use {
|
||||
val content = message.msgtype().use { type ->
|
||||
val type = message.msgtype().use { type ->
|
||||
when (type) {
|
||||
is MessageType.Audio -> {
|
||||
AudioMessageType(type.content.body, type.content.source.useUrl(), type.content.info?.map())
|
||||
|
|
@ -71,7 +71,7 @@ class EventMessageMapper {
|
|||
body = message.body(),
|
||||
inReplyTo = message.inReplyTo()?.let { UserId(it) },
|
||||
isEdited = message.isEdited(),
|
||||
type = content
|
||||
type = type
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ import io.element.android.libraries.matrix.api.timeline.item.event.EventReaction
|
|||
import io.element.android.libraries.matrix.api.timeline.item.event.EventSendState
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.EventTimelineItem
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.ProfileTimelineDetails
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.TimelineEventContent
|
||||
import org.matrix.rustcomponents.sdk.Reaction
|
||||
import org.matrix.rustcomponents.sdk.EventSendState as RustEventSendState
|
||||
import org.matrix.rustcomponents.sdk.EventTimelineItem as RustEventTimelineItem
|
||||
|
|
|
|||
|
|
@ -20,21 +20,25 @@ import io.element.android.libraries.matrix.api.core.UserId
|
|||
import io.element.android.libraries.matrix.api.timeline.item.event.FailedToParseMessageLikeContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.FailedToParseStateContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.MembershipChange
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.OtherState
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.ProfileChangeContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.RedactedContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.RoomMembershipContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.StateContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.StickerContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.TimelineEventContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.EventContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.UnableToDecryptContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.UnknownContent
|
||||
import io.element.android.libraries.matrix.impl.media.map
|
||||
import org.matrix.rustcomponents.sdk.TimelineItemContent
|
||||
import org.matrix.rustcomponents.sdk.TimelineItemContentKind
|
||||
import org.matrix.rustcomponents.sdk.EncryptedMessage as RustEncryptedMessage
|
||||
import org.matrix.rustcomponents.sdk.MembershipChange as RustMembershipChange
|
||||
import org.matrix.rustcomponents.sdk.OtherState as RustOtherState
|
||||
|
||||
class TimelineEventContentMapper(private val eventMessageMapper: EventMessageMapper = EventMessageMapper()) {
|
||||
|
||||
fun map(content: TimelineItemContent): TimelineEventContent = content.use {
|
||||
fun map(content: TimelineItemContent): EventContent = content.use {
|
||||
when (val kind = content.kind()) {
|
||||
is TimelineItemContentKind.FailedToParseMessageLike -> {
|
||||
FailedToParseMessageLikeContent(
|
||||
|
|
@ -71,11 +75,14 @@ class TimelineEventContentMapper(private val eventMessageMapper: EventMessageMap
|
|||
is TimelineItemContentKind.RoomMembership -> {
|
||||
RoomMembershipContent(
|
||||
UserId(kind.userId),
|
||||
MembershipChange.JOINED
|
||||
kind.change?.map()
|
||||
)
|
||||
}
|
||||
is TimelineItemContentKind.State -> {
|
||||
UnknownContent
|
||||
StateContent(
|
||||
stateKey = kind.stateKey,
|
||||
content = kind.content.map()
|
||||
)
|
||||
}
|
||||
is TimelineItemContentKind.Sticker -> {
|
||||
StickerContent(
|
||||
|
|
@ -93,6 +100,55 @@ class TimelineEventContentMapper(private val eventMessageMapper: EventMessageMap
|
|||
}
|
||||
}
|
||||
|
||||
private fun RustMembershipChange.map(): MembershipChange {
|
||||
return when (this) {
|
||||
RustMembershipChange.NONE -> MembershipChange.NONE
|
||||
RustMembershipChange.ERROR -> MembershipChange.ERROR
|
||||
RustMembershipChange.JOINED -> MembershipChange.JOINED
|
||||
RustMembershipChange.LEFT -> MembershipChange.LEFT
|
||||
RustMembershipChange.BANNED -> MembershipChange.BANNED
|
||||
RustMembershipChange.UNBANNED -> MembershipChange.UNBANNED
|
||||
RustMembershipChange.KICKED -> MembershipChange.KICKED
|
||||
RustMembershipChange.INVITED -> MembershipChange.INVITED
|
||||
RustMembershipChange.KICKED_AND_BANNED -> MembershipChange.KICKED_AND_BANNED
|
||||
RustMembershipChange.INVITATION_ACCEPTED -> MembershipChange.INVITATION_ACCEPTED
|
||||
RustMembershipChange.INVITATION_REJECTED -> MembershipChange.INVITATION_REJECTED
|
||||
RustMembershipChange.INVITATION_REVOKED -> MembershipChange.INVITATION_REVOKED
|
||||
RustMembershipChange.KNOCKED -> MembershipChange.KNOCKED
|
||||
RustMembershipChange.KNOCK_ACCEPTED -> MembershipChange.KNOCK_ACCEPTED
|
||||
RustMembershipChange.KNOCK_RETRACTED -> MembershipChange.KNOCK_RETRACTED
|
||||
RustMembershipChange.KNOCK_DENIED -> MembershipChange.KNOCK_DENIED
|
||||
RustMembershipChange.NOT_IMPLEMENTED -> MembershipChange.NOT_IMPLEMENTED
|
||||
}
|
||||
}
|
||||
|
||||
//TODO extract state events?
|
||||
private fun RustOtherState.map(): OtherState {
|
||||
return when (this) {
|
||||
is RustOtherState.Custom -> OtherState.Custom(eventType)
|
||||
RustOtherState.PolicyRuleRoom -> OtherState.PolicyRuleRoom
|
||||
RustOtherState.PolicyRuleServer -> OtherState.PolicyRuleServer
|
||||
RustOtherState.PolicyRuleUser -> OtherState.PolicyRuleUser
|
||||
RustOtherState.RoomAliases -> OtherState.RoomAliases
|
||||
is RustOtherState.RoomAvatar -> OtherState.RoomAvatar(url)
|
||||
RustOtherState.RoomCanonicalAlias -> OtherState.RoomCanonicalAlias
|
||||
RustOtherState.RoomCreate -> OtherState.RoomCreate
|
||||
RustOtherState.RoomEncryption -> OtherState.RoomEncryption
|
||||
RustOtherState.RoomGuestAccess -> OtherState.RoomGuestAccess
|
||||
RustOtherState.RoomHistoryVisibility -> OtherState.RoomHistoryVisibility
|
||||
RustOtherState.RoomJoinRules -> OtherState.RoomJoinRules
|
||||
is RustOtherState.RoomName -> OtherState.RoomName(name)
|
||||
RustOtherState.RoomPinnedEvents -> OtherState.RoomPinnedEvents
|
||||
RustOtherState.RoomPowerLevels -> OtherState.RoomPowerLevels
|
||||
RustOtherState.RoomServerAcl -> OtherState.RoomServerAcl
|
||||
is RustOtherState.RoomThirdPartyInvite -> OtherState.RoomThirdPartyInvite(displayName)
|
||||
RustOtherState.RoomTombstone -> OtherState.RoomTombstone
|
||||
is RustOtherState.RoomTopic -> OtherState.RoomTopic(topic)
|
||||
RustOtherState.SpaceChild -> OtherState.SpaceChild
|
||||
RustOtherState.SpaceParent -> OtherState.SpaceParent
|
||||
}
|
||||
}
|
||||
|
||||
private fun RustEncryptedMessage.map(): UnableToDecryptContent.Data {
|
||||
return when (this) {
|
||||
is RustEncryptedMessage.MegolmV1AesSha2 -> UnableToDecryptContent.Data.MegolmV1AesSha2(sessionId)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue