Introduce sending and sent state for timeline messages (#319)

* Updated md files

* Changelog

* Update CONTRIBUTING.md

Co-authored-by: Stefan Ceriu <stefanc@matrix.org>

* PR fixes

* Sending state in the timeline

* Changelog

* Formating

* Project file

* Make MessageTimelineItemDeliveryStatus Equatable

* Renamed seconds ago to elepsed time

* Moved show/hide logic into TimelineDeliveryStatusView

* Hide view when unknown status

* Added delivery status for other items

* Cleanup

Co-authored-by: Stefan Ceriu <stefanc@matrix.org>
This commit is contained in:
Aleksandrs Proskurins
2022-11-17 17:47:28 +02:00
committed by GitHub
parent 276daf0355
commit 77a0d5a58f
7 changed files with 109 additions and 9 deletions
@@ -22,4 +22,6 @@ struct RoomTimelineItemProperties: Equatable {
var isEdited = false
/// The aggregated reactions that have been sent for this item.
var reactions: [AggregatedReaction] = []
/// The delivery status for this item.
var deliveryStatus: MessageTimelineItemDeliveryStatus = .unknown
}
@@ -166,7 +166,8 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol {
senderDisplayName: displayName,
senderAvatar: avatarImage,
properties: RoomTimelineItemProperties(isEdited: message.isEdited,
reactions: aggregateReactions(message.reactions)))
reactions: aggregateReactions(message.reactions),
deliveryStatus: message.deliveryStatus))
}
private func buildImageTimelineItemFromMessage(_ message: MessageTimelineItem<ImageMessageContent>,
@@ -196,7 +197,8 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol {
aspectRatio: aspectRatio,
blurhash: message.blurhash,
properties: RoomTimelineItemProperties(isEdited: message.isEdited,
reactions: aggregateReactions(message.reactions)))
reactions: aggregateReactions(message.reactions),
deliveryStatus: message.deliveryStatus))
}
private func buildVideoTimelineItemFromMessage(_ message: MessageTimelineItem<VideoMessageContent>,
@@ -228,7 +230,8 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol {
aspectRatio: aspectRatio,
blurhash: message.blurhash,
properties: RoomTimelineItemProperties(isEdited: message.isEdited,
reactions: aggregateReactions(message.reactions)))
reactions: aggregateReactions(message.reactions),
deliveryStatus: message.deliveryStatus))
}
private func buildFileTimelineItemFromMessage(_ message: MessageTimelineItem<FileMessageContent>,
@@ -248,7 +251,8 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol {
source: message.source,
thumbnailSource: message.thumbnailSource,
properties: RoomTimelineItemProperties(isEdited: message.isEdited,
reactions: aggregateReactions(message.reactions)))
reactions: aggregateReactions(message.reactions),
deliveryStatus: message.deliveryStatus))
}
private func buildNoticeTimelineItemFromMessage(_ message: MessageTimelineItem<NoticeMessageContent>,
@@ -270,7 +274,8 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol {
senderDisplayName: displayName,
senderAvatar: avatarImage,
properties: RoomTimelineItemProperties(isEdited: message.isEdited,
reactions: aggregateReactions(message.reactions)))
reactions: aggregateReactions(message.reactions),
deliveryStatus: message.deliveryStatus))
}
private func buildEmoteTimelineItemFromMessage(_ message: MessageTimelineItem<EmoteMessageContent>,
@@ -292,7 +297,8 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol {
senderDisplayName: displayName,
senderAvatar: avatarImage,
properties: RoomTimelineItemProperties(isEdited: message.isEdited,
reactions: aggregateReactions(message.reactions)))
reactions: aggregateReactions(message.reactions),
deliveryStatus: message.deliveryStatus))
}
private func aggregateReactions(_ reactions: [Reaction]) -> [AggregatedReaction] {