Timeline: quickly integreate sender profile

This commit is contained in:
ganfra 2023-02-06 20:52:42 +01:00
parent ce1c903ddd
commit 0f6744ab74

View file

@ -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.room.MatrixRoom
import io.element.android.libraries.matrix.timeline.MatrixTimelineItem import io.element.android.libraries.matrix.timeline.MatrixTimelineItem
import kotlinx.collections.immutable.toImmutableList import kotlinx.collections.immutable.toImmutableList
import org.matrix.rustcomponents.sdk.ProfileTimelineDetails
import javax.inject.Inject import javax.inject.Inject
class TimelineItemEventFactory @Inject constructor( class TimelineItemEventFactory @Inject constructor(
@ -41,8 +42,22 @@ class TimelineItemEventFactory @Inject constructor(
val currentSender = currentTimelineItem.event.sender() val currentSender = currentTimelineItem.event.sender()
val groupPosition = val groupPosition =
computeGroupPosition(currentTimelineItem, timelineItems, index) computeGroupPosition(currentTimelineItem, timelineItems, index)
val senderDisplayName = room.userDisplayName(currentSender).getOrNull() val senderDisplayName: String?
val senderAvatarUrl = room.userAvatarUrl(currentSender).getOrNull() 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( val senderAvatarData = AvatarData(
name = senderDisplayName ?: currentSender, name = senderDisplayName ?: currentSender,
url = senderAvatarUrl, url = senderAvatarUrl,