Use a UITableView component for the timeline. (#349)

* Use a collection view for the timeline.
* Switch to a table view.
This commit is contained in:
Doug
2022-12-05 15:39:21 +00:00
committed by GitHub
parent 9415bd3a7a
commit 3c893ba342
27 changed files with 583 additions and 463 deletions
@@ -17,7 +17,7 @@
import Foundation
import UIKit
struct EmoteRoomTimelineItem: EventBasedTimelineItemProtocol, Identifiable, Equatable {
struct EmoteRoomTimelineItem: EventBasedTimelineItemProtocol, Identifiable, Hashable {
let id: String
let text: String
var attributedComponents: [AttributedStringBuilderComponent]?
@@ -16,8 +16,8 @@
import UIKit
struct EncryptedRoomTimelineItem: EventBasedTimelineItemProtocol, Identifiable, Equatable {
enum EncryptionType: Equatable {
struct EncryptedRoomTimelineItem: EventBasedTimelineItemProtocol, Identifiable, Hashable {
enum EncryptionType: Hashable {
case megolmV1AesSha2(sessionId: String)
case olmV1Curve25519AesSha2(senderKey: String)
case unknown
@@ -17,7 +17,7 @@
import Foundation
import UIKit
struct FileRoomTimelineItem: EventBasedTimelineItemProtocol, Identifiable, Equatable {
struct FileRoomTimelineItem: EventBasedTimelineItemProtocol, Identifiable, Hashable {
let id: String
let text: String
let timestamp: String
@@ -17,7 +17,7 @@
import Foundation
import UIKit
struct ImageRoomTimelineItem: EventBasedTimelineItemProtocol, Identifiable, Equatable {
struct ImageRoomTimelineItem: EventBasedTimelineItemProtocol, Identifiable, Hashable {
let id: String
let text: String
let timestamp: String
@@ -17,7 +17,7 @@
import Foundation
import UIKit
struct NoticeRoomTimelineItem: EventBasedTimelineItemProtocol, Identifiable, Equatable {
struct NoticeRoomTimelineItem: EventBasedTimelineItemProtocol, Identifiable, Hashable {
let id: String
let text: String
var attributedComponents: [AttributedStringBuilderComponent]?
@@ -17,7 +17,7 @@
import Foundation
import UIKit
struct RedactedRoomTimelineItem: EventBasedTimelineItemProtocol, Identifiable, Equatable {
struct RedactedRoomTimelineItem: EventBasedTimelineItemProtocol, Identifiable, Hashable {
let id: String
let text: String
let timestamp: String
@@ -17,7 +17,7 @@
import Foundation
/// Properties of a matrix event that are common between all timeline items.
struct RoomTimelineItemProperties: Equatable {
struct RoomTimelineItemProperties: Hashable {
/// Whether the item has been edited.
var isEdited = false
/// The aggregated reactions that have been sent for this item.
@@ -16,7 +16,7 @@
import Foundation
struct SeparatorRoomTimelineItem: DecorationTimelineItemProtocol, Identifiable, Equatable {
struct SeparatorRoomTimelineItem: DecorationTimelineItemProtocol, Identifiable, Hashable {
let id: String
let text: String
}
@@ -17,7 +17,7 @@
import Foundation
import UIKit
struct TextRoomTimelineItem: EventBasedTimelineItemProtocol, Identifiable, Equatable {
struct TextRoomTimelineItem: EventBasedTimelineItemProtocol, Identifiable, Hashable {
let id: String
let text: String
var attributedComponents: [AttributedStringBuilderComponent]?
@@ -17,7 +17,7 @@
import Foundation
import UIKit
struct VideoRoomTimelineItem: EventBasedTimelineItemProtocol, Identifiable, Equatable {
struct VideoRoomTimelineItem: EventBasedTimelineItemProtocol, Identifiable, Hashable {
let id: String
let text: String
let timestamp: String