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 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) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue