Fix possible memory leak in EventMessageMapper. (#1326)

This commit is contained in:
Jorge Martin Espinosa 2023-09-14 08:30:41 +02:00 committed by GitHub
parent c1ae0ead3b
commit 3699b516ea

View file

@ -46,22 +46,22 @@ class EventMessageMapper {
fun map(message: Message): MessageContent = message.use { fun map(message: Message): MessageContent = message.use {
val type = it.msgtype().use(this::mapMessageType) val type = it.msgtype().use(this::mapMessageType)
val inReplyToId = it.inReplyTo()?.eventId?.let(::EventId) val inReplyToEvent: InReplyTo? = it.inReplyTo()?.use { details ->
val inReplyToEvent: InReplyTo? = it.inReplyTo()?.event?.use { details -> val inReplyToId = EventId(details.eventId)
when (details) { when (val event = details.event) {
is RepliedToEventDetails.Ready -> { is RepliedToEventDetails.Ready -> {
val senderProfile = details.senderProfile as? ProfileDetails.Ready val senderProfile = event.senderProfile as? ProfileDetails.Ready
InReplyTo.Ready( InReplyTo.Ready(
eventId = inReplyToId!!, eventId = inReplyToId,
content = timelineEventContentMapper.map(details.content), content = timelineEventContentMapper.map(event.content),
senderId = UserId(details.sender), senderId = UserId(event.sender),
senderDisplayName = senderProfile?.displayName, senderDisplayName = senderProfile?.displayName,
senderAvatarUrl = senderProfile?.avatarUrl, senderAvatarUrl = senderProfile?.avatarUrl,
) )
} }
is RepliedToEventDetails.Error -> InReplyTo.Error is RepliedToEventDetails.Error -> InReplyTo.Error
is RepliedToEventDetails.Pending -> InReplyTo.Pending is RepliedToEventDetails.Pending -> InReplyTo.Pending
is RepliedToEventDetails.Unavailable -> InReplyTo.NotLoaded(inReplyToId!!) is RepliedToEventDetails.Unavailable -> InReplyTo.NotLoaded(inReplyToId)
} }
} }
MessageContent( MessageContent(