TimelineEvent : fix memory leak

This commit is contained in:
ganfra 2023-09-11 17:47:58 +02:00
parent 0ff92b4f92
commit 4196b973f4

View file

@ -34,14 +34,22 @@ import io.element.android.libraries.matrix.impl.media.map
import io.element.android.libraries.matrix.impl.poll.map
import org.matrix.rustcomponents.sdk.TimelineItemContent
import org.matrix.rustcomponents.sdk.TimelineItemContentKind
import org.matrix.rustcomponents.sdk.use
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): EventContent = content.use {
when (val kind = it.kind()) {
fun map(content: TimelineItemContent): EventContent {
return content.use { _ ->
content.kind().use { kind ->
map(content, kind)
}
}
}
private fun map(content: TimelineItemContent, kind: TimelineItemContentKind) = when (kind) {
is TimelineItemContentKind.FailedToParseMessageLike -> {
FailedToParseMessageLikeContent(
eventType = kind.eventType,
@ -56,7 +64,7 @@ class TimelineEventContentMapper(private val eventMessageMapper: EventMessageMap
)
}
TimelineItemContentKind.Message -> {
val message = it.asMessage()
val message = content.asMessage()
if (message == null) {
UnknownContent
} else {
@ -113,7 +121,6 @@ class TimelineEventContentMapper(private val eventMessageMapper: EventMessageMap
else -> UnknownContent
}
}
}
private fun RustMembershipChange.map(): MembershipChange {
return when (this) {