Try fixing 'Timeline Event object has already been destroyed' (#5675)

This will display a fallback notification. I don't see how the current code could cause it, but I tried to re-structure it a bit so we don't have nested `use` usages and `timestamp` is fetched ahead of time.
This commit is contained in:
Jorge Martin Espinosa
2025-11-04 11:36:17 +01:00
committed by GitHub
parent a1e270578a
commit 8d529849e8
2 changed files with 5 additions and 3 deletions

View File

@@ -39,6 +39,7 @@ class NotificationMapper(
isDirect = item.roomInfo.isDirect,
activeMembersCount = item.roomInfo.joinedMembersCount.toInt(),
)
val timestamp = item.timestamp() ?: clock.epochMillis()
NotificationData(
sessionId = sessionId,
eventId = eventId,
@@ -53,8 +54,8 @@ class NotificationMapper(
isDm = isDm,
isEncrypted = item.roomInfo.isEncrypted.orFalse(),
isNoisy = item.isNoisy.orFalse(),
timestamp = item.timestamp() ?: clock.epochMillis(),
content = item.event.use { notificationContentMapper.map(it) }.getOrThrow(),
timestamp = timestamp,
content = notificationContentMapper.map(item.event).getOrThrow(),
hasMention = item.hasMention.orFalse(),
)
}

View File

@@ -25,8 +25,9 @@ class TimelineEventToNotificationContentMapper {
fun map(timelineEvent: TimelineEvent): Result<NotificationContent> {
return runCatchingExceptions {
timelineEvent.use {
val senderId = UserId(timelineEvent.senderId())
timelineEvent.eventType().use { eventType ->
eventType.toContent(senderId = UserId(timelineEvent.senderId()))
eventType.toContent(senderId = senderId)
}
}
}