TimelineEvent : fix memory leak
This commit is contained in:
parent
0ff92b4f92
commit
4196b973f4
1 changed files with 77 additions and 70 deletions
|
|
@ -34,14 +34,22 @@ import io.element.android.libraries.matrix.impl.media.map
|
||||||
import io.element.android.libraries.matrix.impl.poll.map
|
import io.element.android.libraries.matrix.impl.poll.map
|
||||||
import org.matrix.rustcomponents.sdk.TimelineItemContent
|
import org.matrix.rustcomponents.sdk.TimelineItemContent
|
||||||
import org.matrix.rustcomponents.sdk.TimelineItemContentKind
|
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.EncryptedMessage as RustEncryptedMessage
|
||||||
import org.matrix.rustcomponents.sdk.MembershipChange as RustMembershipChange
|
import org.matrix.rustcomponents.sdk.MembershipChange as RustMembershipChange
|
||||||
import org.matrix.rustcomponents.sdk.OtherState as RustOtherState
|
import org.matrix.rustcomponents.sdk.OtherState as RustOtherState
|
||||||
|
|
||||||
class TimelineEventContentMapper(private val eventMessageMapper: EventMessageMapper = EventMessageMapper()) {
|
class TimelineEventContentMapper(private val eventMessageMapper: EventMessageMapper = EventMessageMapper()) {
|
||||||
|
|
||||||
fun map(content: TimelineItemContent): EventContent = content.use {
|
fun map(content: TimelineItemContent): EventContent {
|
||||||
when (val kind = it.kind()) {
|
return content.use { _ ->
|
||||||
|
content.kind().use { kind ->
|
||||||
|
map(content, kind)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun map(content: TimelineItemContent, kind: TimelineItemContentKind) = when (kind) {
|
||||||
is TimelineItemContentKind.FailedToParseMessageLike -> {
|
is TimelineItemContentKind.FailedToParseMessageLike -> {
|
||||||
FailedToParseMessageLikeContent(
|
FailedToParseMessageLikeContent(
|
||||||
eventType = kind.eventType,
|
eventType = kind.eventType,
|
||||||
|
|
@ -56,7 +64,7 @@ class TimelineEventContentMapper(private val eventMessageMapper: EventMessageMap
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
TimelineItemContentKind.Message -> {
|
TimelineItemContentKind.Message -> {
|
||||||
val message = it.asMessage()
|
val message = content.asMessage()
|
||||||
if (message == null) {
|
if (message == null) {
|
||||||
UnknownContent
|
UnknownContent
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -112,7 +120,6 @@ class TimelineEventContentMapper(private val eventMessageMapper: EventMessageMap
|
||||||
}
|
}
|
||||||
else -> UnknownContent
|
else -> UnknownContent
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun RustMembershipChange.map(): MembershipChange {
|
private fun RustMembershipChange.map(): MembershipChange {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue