Refactor theTimelineItemIdentifier handling; stop relying on optional EventOrTransactionIds and be explicit when setting composer modes from the draft service.

This commit is contained in:
Stefan Ceriu
2024-10-16 14:07:54 +03:00
parent 3d797ccabb
commit 35d49c4d85
56 changed files with 313 additions and 298 deletions
@@ -10,9 +10,9 @@ import Foundation
enum RoomTimelineItemFixtures {
/// The default timeline items used in Xcode previews etc.
static var `default`: [RoomTimelineItemProtocol] = [
SeparatorRoomTimelineItem(id: .init(uniqueID: "Yesterday"), text: "Yesterday"),
TextRoomTimelineItem(id: .init(uniqueID: ".RoomTimelineItemFixtures.default.0",
eventOrTransactionID: .eventId(eventId: "RoomTimelineItemFixtures.default.0")),
SeparatorRoomTimelineItem(id: .virtual(uniqueID: "Yesterday"), text: "Yesterday"),
TextRoomTimelineItem(id: .event(uniqueID: ".RoomTimelineItemFixtures.default.0",
eventOrTransactionID: .eventId(eventId: "RoomTimelineItemFixtures.default.0")),
timestamp: "10:10 AM",
isOutgoing: false,
isEditable: false,
@@ -21,8 +21,8 @@ enum RoomTimelineItemFixtures {
sender: .init(id: "", displayName: "Jacob"),
content: .init(body: "That looks so good!"),
properties: RoomTimelineItemProperties(isEdited: true)),
TextRoomTimelineItem(id: .init(uniqueID: "RoomTimelineItemFixtures.default.1",
eventOrTransactionID: .eventId(eventId: "RoomTimelineItemFixtures.default.1")),
TextRoomTimelineItem(id: .event(uniqueID: "RoomTimelineItemFixtures.default.1",
eventOrTransactionID: .eventId(eventId: "RoomTimelineItemFixtures.default.1")),
timestamp: "10:11 AM",
isOutgoing: false,
isEditable: false,
@@ -33,8 +33,8 @@ enum RoomTimelineItemFixtures {
properties: RoomTimelineItemProperties(reactions: [
AggregatedReaction(accountOwnerID: "me", key: "🙌", senders: [ReactionSender(id: "me", timestamp: Date())])
])),
TextRoomTimelineItem(id: .init(uniqueID: "RoomTimelineItemFixtures.default.2",
eventOrTransactionID: .eventId(eventId: "RoomTimelineItemFixtures.default.2")),
TextRoomTimelineItem(id: .event(uniqueID: "RoomTimelineItemFixtures.default.2",
eventOrTransactionID: .eventId(eventId: "RoomTimelineItemFixtures.default.2")),
timestamp: "10:11 AM",
isOutgoing: false,
isEditable: false,
@@ -52,9 +52,9 @@ enum RoomTimelineItemFixtures {
ReactionSender(id: "jacob", timestamp: Date())
])
])),
SeparatorRoomTimelineItem(id: .init(uniqueID: "Today"), text: "Today"),
TextRoomTimelineItem(id: .init(uniqueID: "RoomTimelineItemFixtures.default.3",
eventOrTransactionID: .eventId(eventId: "RoomTimelineItemFixtures.default.3")),
SeparatorRoomTimelineItem(id: .virtual(uniqueID: "Today"), text: "Today"),
TextRoomTimelineItem(id: .event(uniqueID: "RoomTimelineItemFixtures.default.3",
eventOrTransactionID: .eventId(eventId: "RoomTimelineItemFixtures.default.3")),
timestamp: "5 PM",
isOutgoing: false,
isEditable: false,
@@ -63,8 +63,8 @@ enum RoomTimelineItemFixtures {
sender: .init(id: "", displayName: "Helena"),
content: .init(body: "Wow, cool. Ok, lets go the usual place tomorrow?! Is that too soon? Here’s the menu, let me know what you want it’s on me!"),
properties: RoomTimelineItemProperties(orderedReadReceipts: [ReadReceipt(userID: "alice", formattedTimestamp: nil)])),
TextRoomTimelineItem(id: .init(uniqueID: "RoomTimelineItemFixtures.default.4",
eventOrTransactionID: .eventId(eventId: "RoomTimelineItemFixtures.default.4")),
TextRoomTimelineItem(id: .event(uniqueID: "RoomTimelineItemFixtures.default.4",
eventOrTransactionID: .eventId(eventId: "RoomTimelineItemFixtures.default.4")),
timestamp: "5 PM",
isOutgoing: true,
isEditable: true,
@@ -72,8 +72,8 @@ enum RoomTimelineItemFixtures {
isThreaded: false,
sender: .init(id: "", displayName: "Bob"),
content: .init(body: "And John's speech was amazing!")),
TextRoomTimelineItem(id: .init(uniqueID: "RoomTimelineItemFixtures.default.5",
eventOrTransactionID: .eventId(eventId: "RoomTimelineItemFixtures.default.5")),
TextRoomTimelineItem(id: .event(uniqueID: "RoomTimelineItemFixtures.default.5",
eventOrTransactionID: .eventId(eventId: "RoomTimelineItemFixtures.default.5")),
timestamp: "5 PM",
isOutgoing: true,
isEditable: true,
@@ -86,8 +86,8 @@ enum RoomTimelineItemFixtures {
ReadReceipt(userID: "bob", formattedTimestamp: nil),
ReadReceipt(userID: "charlie", formattedTimestamp: nil),
ReadReceipt(userID: "dan", formattedTimestamp: nil)])),
TextRoomTimelineItem(id: .init(uniqueID: "RoomTimelineItemFixtures.default.6",
eventOrTransactionID: .eventId(eventId: "RoomTimelineItemFixtures.default.6")),
TextRoomTimelineItem(id: .event(uniqueID: "RoomTimelineItemFixtures.default.6",
eventOrTransactionID: .eventId(eventId: "RoomTimelineItemFixtures.default.6")),
timestamp: "5 PM",
isOutgoing: false,
isEditable: false,
@@ -242,7 +242,7 @@ enum RoomTimelineItemFixtures {
static var permalinkChunk: [RoomTimelineItemProtocol] {
(1...20).map { index in
TextRoomTimelineItem(id: .init(uniqueID: "\(index)", eventOrTransactionID: .eventId(eventId: "$\(index)")),
TextRoomTimelineItem(id: .event(uniqueID: "\(index)", eventOrTransactionID: .eventId(eventId: "$\(index)")),
text: "Message ID \(index)",
senderDisplayName: index > 10 ? "Alice" : "Bob")
}
@@ -250,7 +250,7 @@ enum RoomTimelineItemFixtures {
static var mediaChunk: [RoomTimelineItemProtocol] {
[
VideoRoomTimelineItem(id: .random,
VideoRoomTimelineItem(id: .randomEvent,
timestamp: "10:47 am",
isOutgoing: false,
isEditable: false,
@@ -265,7 +265,7 @@ enum RoomTimelineItemFixtures {
height: 1080,
aspectRatio: 1.78,
blurhash: "KtI~70X5V?yss9oyrYs:t6")),
ImageRoomTimelineItem(id: .random,
ImageRoomTimelineItem(id: .randomEvent,
timestamp: "10:47 am",
isOutgoing: false,
isEditable: false,
@@ -285,7 +285,7 @@ enum RoomTimelineItemFixtures {
private extension TextRoomTimelineItem {
init(id: TimelineItemIdentifier? = nil, text: String, senderDisplayName: String) {
self.init(id: id ?? .random,
self.init(id: id ?? .randomEvent,
timestamp: "10:47 am",
isOutgoing: senderDisplayName == "Alice",
isEditable: false,