From 7da7ce5a9933f45d40a59c0d2f8557de30d65086 Mon Sep 17 00:00:00 2001 From: ganfra Date: Mon, 6 Feb 2023 20:52:42 +0100 Subject: [PATCH] Timeline: quickly integreate sender profile --- .../event/TimelineItemEventFactory.kt | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/factories/event/TimelineItemEventFactory.kt b/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/factories/event/TimelineItemEventFactory.kt index 67a9be5698..af201d9a6c 100644 --- a/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/factories/event/TimelineItemEventFactory.kt +++ b/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/factories/event/TimelineItemEventFactory.kt @@ -26,6 +26,7 @@ import io.element.android.libraries.matrix.core.EventId import io.element.android.libraries.matrix.room.MatrixRoom import io.element.android.libraries.matrix.timeline.MatrixTimelineItem import kotlinx.collections.immutable.toImmutableList +import org.matrix.rustcomponents.sdk.ProfileTimelineDetails import javax.inject.Inject class TimelineItemEventFactory @Inject constructor( @@ -41,8 +42,22 @@ class TimelineItemEventFactory @Inject constructor( val currentSender = currentTimelineItem.event.sender() val groupPosition = computeGroupPosition(currentTimelineItem, timelineItems, index) - val senderDisplayName = room.userDisplayName(currentSender).getOrNull() - val senderAvatarUrl = room.userAvatarUrl(currentSender).getOrNull() + val senderDisplayName: String? + val senderAvatarUrl: String? + + when (val senderProfile = currentTimelineItem.event.senderProfile()) { + ProfileTimelineDetails.Unavailable, + ProfileTimelineDetails.Pending, + is ProfileTimelineDetails.Error -> { + senderDisplayName = null + senderAvatarUrl = null + } + is ProfileTimelineDetails.Ready -> { + senderDisplayName = senderProfile.displayName + senderAvatarUrl = senderProfile.avatarUrl + } + } + val senderAvatarData = AvatarData( name = senderDisplayName ?: currentSender, url = senderAvatarUrl,