Show the last message state in the room list.

This commit is contained in:
Doug
2025-11-27 13:33:28 +00:00
committed by Doug
parent dc8f5ef5a9
commit 62930968f8
18 changed files with 129 additions and 15 deletions
@@ -261,13 +261,15 @@ class RoomSummaryProvider: RoomSummaryProviderProtocol {
var attributedLastMessage: AttributedString?
var lastMessageDate: Date?
var lastMessageState: RoomSummary.LastMessageState?
if let latestRoomMessage = roomDetails.latestEvent {
switch latestRoomMessage {
case .local(let timestamp, let senderID, let profile, let content, _):
case .local(let timestamp, let senderID, let profile, let content, let isSending):
let sender = TimelineItemSender(senderID: senderID, senderProfile: profile)
attributedLastMessage = eventStringBuilder.buildAttributedString(for: content, sender: sender, isOutgoing: true)
lastMessageDate = Date(timeIntervalSince1970: TimeInterval(timestamp / 1000))
lastMessageState = isSending ? .sending : .failed // No need to worry about sent for .local: https://github.com/matrix-org/matrix-rust-sdk/issues/3941
case .remote(let timestamp, let senderID, let isOwn, let profile, let content):
let sender = TimelineItemSender(senderID: senderID, senderProfile: profile)
attributedLastMessage = eventStringBuilder.buildAttributedString(for: content, sender: sender, isOutgoing: isOwn)
@@ -301,6 +303,7 @@ class RoomSummaryProvider: RoomSummaryProviderProtocol {
activeMembersCount: UInt(roomInfo.activeMembersCount),
lastMessage: attributedLastMessage,
lastMessageDate: lastMessageDate,
lastMessageState: lastMessageState,
unreadMessagesCount: UInt(roomInfo.numUnreadMessages),
unreadMentionsCount: UInt(roomInfo.numUnreadMentions),
unreadNotificationsCount: UInt(roomInfo.numUnreadNotifications),