Add threadInfo field to message like timeline events (#5930)

* Add `threadInfo` field to message like timeline events:
- Polls
- Stickers
- UTDs

* Add missing cases for `EventTimeline.threadInfo()`
This commit is contained in:
Jorge Martin Espinosa 2025-12-19 10:43:40 +01:00 committed by GitHub
parent 1d0b493869
commit 105bab1758
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 87 additions and 44 deletions

View file

@ -26,7 +26,7 @@ data class MessageContent(
val inReplyTo: InReplyTo?,
val isEdited: Boolean,
val threadInfo: EventThreadInfo?,
val type: MessageType
val type: MessageType,
) : EventContent
data object RedactedContent : EventContent
@ -36,6 +36,7 @@ data class StickerContent(
val body: String?,
val info: ImageInfo,
val source: MediaSource,
val threadInfo: EventThreadInfo?,
) : EventContent {
val bestDescription: String
get() = body ?: filename
@ -49,10 +50,12 @@ data class PollContent(
val votes: ImmutableMap<String, ImmutableList<UserId>>,
val endTime: ULong?,
val isEdited: Boolean,
val threadInfo: EventThreadInfo?,
) : EventContent
data class UnableToDecryptContent(
val data: Data
val data: Data,
val threadInfo: EventThreadInfo?,
) : EventContent {
@Immutable
sealed interface Data {

View file

@ -39,7 +39,13 @@ data class EventTimelineItem(
return (content as? MessageContent)?.inReplyTo
}
fun threadInfo(): EventThreadInfo? = (content as? MessageContent)?.threadInfo
fun threadInfo(): EventThreadInfo? = when (content) {
is MessageContent -> content.threadInfo
is PollContent -> content.threadInfo
is StickerContent -> content.threadInfo
is UnableToDecryptContent -> content.threadInfo
else -> null
}
fun hasNotLoadedInReplyTo(): Boolean {
val details = inReplyTo()