mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 06:55:59 +00:00
Rename RoomTimelineItemFixtures to just TimelineFixtures
This commit is contained in:
@@ -60,6 +60,7 @@
|
|||||||
06D17F7813AA931FF18FD5D0 /* SDKListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE5CD2993048222B64C45006 /* SDKListener.swift */; };
|
06D17F7813AA931FF18FD5D0 /* SDKListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE5CD2993048222B64C45006 /* SDKListener.swift */; };
|
||||||
06D3942496E9E0E655F14D21 /* NotificationManagerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = A057F2FDC14866C3026A89A4 /* NotificationManagerProtocol.swift */; };
|
06D3942496E9E0E655F14D21 /* NotificationManagerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = A057F2FDC14866C3026A89A4 /* NotificationManagerProtocol.swift */; };
|
||||||
06F8EDF52E33A2D36BCC1161 /* AppLockScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56D6F88FE35A0979D2821E06 /* AppLockScreen.swift */; };
|
06F8EDF52E33A2D36BCC1161 /* AppLockScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56D6F88FE35A0979D2821E06 /* AppLockScreen.swift */; };
|
||||||
|
071244C4CCD5E932ACC3D36D /* TimelineFixtures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F65178687F725E8924B723C /* TimelineFixtures.swift */; };
|
||||||
071A017E415AD378F2961B11 /* URL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 227AC5D71A4CE43512062243 /* URL.swift */; };
|
071A017E415AD378F2961B11 /* URL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 227AC5D71A4CE43512062243 /* URL.swift */; };
|
||||||
0728314DD51AC3819F818EA8 /* LogLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2711E5996016ABD6EAAEB58A /* LogLevel.swift */; };
|
0728314DD51AC3819F818EA8 /* LogLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2711E5996016ABD6EAAEB58A /* LogLevel.swift */; };
|
||||||
07376A5274822EB45CC320C7 /* InvitedRoomProxyMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A21027F05874B1BCC3E452B /* InvitedRoomProxyMock.swift */; };
|
07376A5274822EB45CC320C7 /* InvitedRoomProxyMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A21027F05874B1BCC3E452B /* InvitedRoomProxyMock.swift */; };
|
||||||
@@ -673,7 +674,6 @@
|
|||||||
6FC10A00D268FCD48B631E37 /* ViewFrameReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFF7BF82A950B91BC5469E91 /* ViewFrameReader.swift */; };
|
6FC10A00D268FCD48B631E37 /* ViewFrameReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFF7BF82A950B91BC5469E91 /* ViewFrameReader.swift */; };
|
||||||
6FD8053301C5FEFA82D2F246 /* URLComponents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BFDCA5A09EE70BC17F2EFA7 /* URLComponents.swift */; };
|
6FD8053301C5FEFA82D2F246 /* URLComponents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BFDCA5A09EE70BC17F2EFA7 /* URLComponents.swift */; };
|
||||||
70394ECD2DCC70741538620D /* AccessibilityIdentifiers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04BB8DDE245ED86C489BA983 /* AccessibilityIdentifiers.swift */; };
|
70394ECD2DCC70741538620D /* AccessibilityIdentifiers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04BB8DDE245ED86C489BA983 /* AccessibilityIdentifiers.swift */; };
|
||||||
70558528EF68CAAEF09972D5 /* RoomTimelineItemFixtures.swift in Sources */ = {isa = PBXBuildFile; fileRef = E96ED747FF90332EA1333C22 /* RoomTimelineItemFixtures.swift */; };
|
|
||||||
706289B086B0A6B0C211763F /* UITestsSignalling.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7F0192CE2F891141A25B49F /* UITestsSignalling.swift */; };
|
706289B086B0A6B0C211763F /* UITestsSignalling.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7F0192CE2F891141A25B49F /* UITestsSignalling.swift */; };
|
||||||
707E49BE07E8EB8A13C0EB1E /* SessionVerificationScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FACD034DB52525A3CEF2BDF /* SessionVerificationScreen.swift */; };
|
707E49BE07E8EB8A13C0EB1E /* SessionVerificationScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FACD034DB52525A3CEF2BDF /* SessionVerificationScreen.swift */; };
|
||||||
708FC3184CCED825F0A36273 /* RoomThreadListServiceProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCE06F4A71FD46C9D8CD432E /* RoomThreadListServiceProxy.swift */; };
|
708FC3184CCED825F0A36273 /* RoomThreadListServiceProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCE06F4A71FD46C9D8CD432E /* RoomThreadListServiceProxy.swift */; };
|
||||||
@@ -1923,6 +1923,7 @@
|
|||||||
2E11E7C396ED06A154CF6DF3 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/SAS.strings; sourceTree = "<group>"; };
|
2E11E7C396ED06A154CF6DF3 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/SAS.strings; sourceTree = "<group>"; };
|
||||||
2F06F70B9C433BAD4BC6B9F5 /* EncryptedRoomTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EncryptedRoomTimelineView.swift; sourceTree = "<group>"; };
|
2F06F70B9C433BAD4BC6B9F5 /* EncryptedRoomTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EncryptedRoomTimelineView.swift; sourceTree = "<group>"; };
|
||||||
2F36C5D9B37E50915ECBD3EE /* RoomMemberProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomMemberProxy.swift; sourceTree = "<group>"; };
|
2F36C5D9B37E50915ECBD3EE /* RoomMemberProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomMemberProxy.swift; sourceTree = "<group>"; };
|
||||||
|
2F65178687F725E8924B723C /* TimelineFixtures.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineFixtures.swift; sourceTree = "<group>"; };
|
||||||
2F926D08EB3D622A480BCA71 /* TimelineEventContent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineEventContent.swift; sourceTree = "<group>"; };
|
2F926D08EB3D622A480BCA71 /* TimelineEventContent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineEventContent.swift; sourceTree = "<group>"; };
|
||||||
303D9438EFB481F57A366E82 /* EncryptionResetPasswordScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EncryptionResetPasswordScreenViewModel.swift; sourceTree = "<group>"; };
|
303D9438EFB481F57A366E82 /* EncryptionResetPasswordScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EncryptionResetPasswordScreenViewModel.swift; sourceTree = "<group>"; };
|
||||||
303FCADE77DF1F3670C086ED /* BugReportScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BugReportScreenViewModel.swift; sourceTree = "<group>"; };
|
303FCADE77DF1F3670C086ED /* BugReportScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BugReportScreenViewModel.swift; sourceTree = "<group>"; };
|
||||||
@@ -2958,7 +2959,6 @@
|
|||||||
E8A1F98AE670377B20679FF5 /* MediaPlayerProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPlayerProvider.swift; sourceTree = "<group>"; };
|
E8A1F98AE670377B20679FF5 /* MediaPlayerProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPlayerProvider.swift; sourceTree = "<group>"; };
|
||||||
E8AE4B3273BA189FDCD4055C /* UserIndicator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserIndicator.swift; sourceTree = "<group>"; };
|
E8AE4B3273BA189FDCD4055C /* UserIndicator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserIndicator.swift; sourceTree = "<group>"; };
|
||||||
E944F717FC10A428D027074D /* RoomPowerLevelsProxyMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomPowerLevelsProxyMock.swift; sourceTree = "<group>"; };
|
E944F717FC10A428D027074D /* RoomPowerLevelsProxyMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomPowerLevelsProxyMock.swift; sourceTree = "<group>"; };
|
||||||
E96ED747FF90332EA1333C22 /* RoomTimelineItemFixtures.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomTimelineItemFixtures.swift; sourceTree = "<group>"; };
|
|
||||||
E992D7B8BE54B2AB454613AF /* XCUIElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XCUIElement.swift; sourceTree = "<group>"; };
|
E992D7B8BE54B2AB454613AF /* XCUIElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XCUIElement.swift; sourceTree = "<group>"; };
|
||||||
E9A3D3CFA199FA7897364547 /* CallInviteRoomTimelineItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallInviteRoomTimelineItem.swift; sourceTree = "<group>"; };
|
E9A3D3CFA199FA7897364547 /* CallInviteRoomTimelineItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallInviteRoomTimelineItem.swift; sourceTree = "<group>"; };
|
||||||
E9B796D347E53631576F631C /* PreviewTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreviewTests.swift; sourceTree = "<group>"; };
|
E9B796D347E53631576F631C /* PreviewTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreviewTests.swift; sourceTree = "<group>"; };
|
||||||
@@ -4129,7 +4129,7 @@
|
|||||||
3EA31CC7012EA2A5653DAFC9 /* Fixtures */ = {
|
3EA31CC7012EA2A5653DAFC9 /* Fixtures */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
E96ED747FF90332EA1333C22 /* RoomTimelineItemFixtures.swift */,
|
2F65178687F725E8924B723C /* TimelineFixtures.swift */,
|
||||||
);
|
);
|
||||||
path = Fixtures;
|
path = Fixtures;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -8903,7 +8903,6 @@
|
|||||||
12F7172C93873638B23CD6AD /* RoomThreadListServiceProxyProtocol.swift in Sources */,
|
12F7172C93873638B23CD6AD /* RoomThreadListServiceProxyProtocol.swift in Sources */,
|
||||||
4E945AD6862C403F74E57755 /* RoomTimelineItemFactory.swift in Sources */,
|
4E945AD6862C403F74E57755 /* RoomTimelineItemFactory.swift in Sources */,
|
||||||
13C77FDF17C4C6627CFFC205 /* RoomTimelineItemFactoryProtocol.swift in Sources */,
|
13C77FDF17C4C6627CFFC205 /* RoomTimelineItemFactoryProtocol.swift in Sources */,
|
||||||
70558528EF68CAAEF09972D5 /* RoomTimelineItemFixtures.swift in Sources */,
|
|
||||||
878070573C7BF19E735707B4 /* RoomTimelineItemProperties.swift in Sources */,
|
878070573C7BF19E735707B4 /* RoomTimelineItemProperties.swift in Sources */,
|
||||||
1AE4AEA0FA8DEF52671832E0 /* RoomTimelineItemProtocol.swift in Sources */,
|
1AE4AEA0FA8DEF52671832E0 /* RoomTimelineItemProtocol.swift in Sources */,
|
||||||
AD55E245FE686D7DB4C86406 /* RoomTimelineItemView.swift in Sources */,
|
AD55E245FE686D7DB4C86406 /* RoomTimelineItemView.swift in Sources */,
|
||||||
@@ -9074,6 +9073,7 @@
|
|||||||
FA53FA227FFBE469AFF32F71 /* TimelineControllerProtocol.swift in Sources */,
|
FA53FA227FFBE469AFF32F71 /* TimelineControllerProtocol.swift in Sources */,
|
||||||
798BF3072137833FBD3F4C96 /* TimelineDeliveryStatusView.swift in Sources */,
|
798BF3072137833FBD3F4C96 /* TimelineDeliveryStatusView.swift in Sources */,
|
||||||
22BA593A5E19D8D3DE2FAA6F /* TimelineEventContent.swift in Sources */,
|
22BA593A5E19D8D3DE2FAA6F /* TimelineEventContent.swift in Sources */,
|
||||||
|
071244C4CCD5E932ACC3D36D /* TimelineFixtures.swift in Sources */,
|
||||||
109AEB7D33C4497727AFB87F /* TimelineInteractionHandler.swift in Sources */,
|
109AEB7D33C4497727AFB87F /* TimelineInteractionHandler.swift in Sources */,
|
||||||
E6FA87F773424B27614B23E9 /* TimelineItemAccessibilityModifier.swift in Sources */,
|
E6FA87F773424B27614B23E9 /* TimelineItemAccessibilityModifier.swift in Sources */,
|
||||||
F6767F17D538578B370DD805 /* TimelineItemBubbleBackground.swift in Sources */,
|
F6767F17D538578B370DD805 /* TimelineItemBubbleBackground.swift in Sources */,
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ extension TimelineControllerFactoryMock {
|
|||||||
if let timelineController = configuration.threadTimelineController {
|
if let timelineController = configuration.threadTimelineController {
|
||||||
return timelineController
|
return timelineController
|
||||||
} else {
|
} else {
|
||||||
return TimelineControllerMock(.init(timelineItems: RoomTimelineItemFixtures.largeChunk))
|
return TimelineControllerMock(.init(timelineItems: TimelineFixtures.largeChunk))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ extension TimelineControllerFactoryMock {
|
|||||||
if let timelineController = configuration.threadTimelineController {
|
if let timelineController = configuration.threadTimelineController {
|
||||||
return .success(timelineController)
|
return .success(timelineController)
|
||||||
} else {
|
} else {
|
||||||
let timelineController = TimelineControllerMock(.init(timelineKind: .thread(rootEventID: threadRootEventID), timelineItems: RoomTimelineItemFixtures.largeChunk))
|
let timelineController = TimelineControllerMock(.init(timelineKind: .thread(rootEventID: threadRootEventID), timelineItems: TimelineFixtures.largeChunk))
|
||||||
return .success(timelineController)
|
return .success(timelineController)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import MatrixRustSDKMocks
|
|||||||
struct TimelineControllerMockConfiguration {
|
struct TimelineControllerMockConfiguration {
|
||||||
var roomProxy: JoinedRoomProxyProtocol?
|
var roomProxy: JoinedRoomProxyProtocol?
|
||||||
var timelineKind: TimelineKind = .live
|
var timelineKind: TimelineKind = .live
|
||||||
var timelineItems: [RoomTimelineItemProtocol] = RoomTimelineItemFixtures.default
|
var timelineItems: [RoomTimelineItemProtocol] = TimelineFixtures.default
|
||||||
var timelineProxy: TimelineProxyProtocol?
|
var timelineProxy: TimelineProxyProtocol?
|
||||||
var timelineItemsTimestamps: [TimelineItemIdentifier: Date] = [:]
|
var timelineItemsTimestamps: [TimelineItemIdentifier: Date] = [:]
|
||||||
var paginationState: TimelinePaginationState = .initial
|
var paginationState: TimelinePaginationState = .initial
|
||||||
@@ -25,7 +25,7 @@ struct TimelineControllerMockConfiguration {
|
|||||||
extension TimelineControllerMock {
|
extension TimelineControllerMock {
|
||||||
static var mediaGallery: TimelineControllerMock {
|
static var mediaGallery: TimelineControllerMock {
|
||||||
TimelineControllerMock(.init(timelineKind: .media(.mediaFilesScreen), timelineItems: (0..<5).reduce([]) { partialResult, _ in
|
TimelineControllerMock(.init(timelineKind: .media(.mediaFilesScreen), timelineItems: (0..<5).reduce([]) { partialResult, _ in
|
||||||
partialResult + [RoomTimelineItemFixtures.separator] + RoomTimelineItemFixtures.mediaChunk
|
partialResult + [TimelineFixtures.separator] + TimelineFixtures.mediaChunk
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -362,11 +362,11 @@ struct TimelineItemMenu_Previews: PreviewProvider, TestablePreview {
|
|||||||
static func makeItem(itemType: ItemType) -> EventBasedTimelineItemProtocol? {
|
static func makeItem(itemType: ItemType) -> EventBasedTimelineItemProtocol? {
|
||||||
switch itemType {
|
switch itemType {
|
||||||
case .incomingText:
|
case .incomingText:
|
||||||
RoomTimelineItemFixtures.singleMessageChunk.first as? EventBasedTimelineItemProtocol
|
TimelineFixtures.singleMessageChunk.first as? EventBasedTimelineItemProtocol
|
||||||
case .outgoingMedia:
|
case .outgoingMedia:
|
||||||
RoomTimelineItemFixtures.mediaChunk[1] as? EventBasedTimelineItemProtocol
|
TimelineFixtures.mediaChunk[1] as? EventBasedTimelineItemProtocol
|
||||||
case .outgoingMediaWithCaption:
|
case .outgoingMediaWithCaption:
|
||||||
RoomTimelineItemFixtures.mediaChunk[5] as? EventBasedTimelineItemProtocol
|
TimelineFixtures.mediaChunk[5] as? EventBasedTimelineItemProtocol
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -87,7 +87,7 @@ struct HighlightedTimelineItemModifier_Previews: PreviewProvider, TestablePrevie
|
|||||||
struct HighlightedTimelineItemTimeline_Previews: PreviewProvider {
|
struct HighlightedTimelineItemTimeline_Previews: PreviewProvider {
|
||||||
static let roomProxyMock = JoinedRoomProxyMock(.init(name: "Preview room"))
|
static let roomProxyMock = JoinedRoomProxyMock(.init(name: "Preview room"))
|
||||||
static let roomViewModel = RoomScreenViewModel.mock(roomProxyMock: roomProxyMock)
|
static let roomViewModel = RoomScreenViewModel.mock(roomProxyMock: roomProxyMock)
|
||||||
static let focussedEventID = "RoomTimelineItemFixtures.default.5"
|
static let focussedEventID = "TimelineFixtures.default.5"
|
||||||
static let composerViewModel = ComposerToolbarViewModel.mock()
|
static let composerViewModel = ComposerToolbarViewModel.mock()
|
||||||
static let timelineViewModel = {
|
static let timelineViewModel = {
|
||||||
let appSettings = AppSettings.volatile()
|
let appSettings = AppSettings.volatile()
|
||||||
|
|||||||
+17
-17
@@ -9,12 +9,12 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
import MatrixRustSDK
|
import MatrixRustSDK
|
||||||
|
|
||||||
enum RoomTimelineItemFixtures {
|
enum TimelineFixtures {
|
||||||
/// The default timeline items used in Xcode previews etc.
|
/// The default timeline items used in Xcode previews etc.
|
||||||
static var `default`: [RoomTimelineItemProtocol] = [
|
static var `default`: [RoomTimelineItemProtocol] = [
|
||||||
SeparatorRoomTimelineItem(id: .virtual(uniqueID: .init("Yesterday")), timestamp: .mock),
|
SeparatorRoomTimelineItem(id: .virtual(uniqueID: .init("Yesterday")), timestamp: .mock),
|
||||||
TextRoomTimelineItem(id: .event(uniqueID: .init(".RoomTimelineItemFixtures.default.0"),
|
TextRoomTimelineItem(id: .event(uniqueID: .init(".TimelineFixtures.default.0"),
|
||||||
eventOrTransactionID: .eventID("RoomTimelineItemFixtures.default.0")),
|
eventOrTransactionID: .eventID("TimelineFixtures.default.0")),
|
||||||
timestamp: .mock,
|
timestamp: .mock,
|
||||||
isOutgoing: false,
|
isOutgoing: false,
|
||||||
isEditable: false,
|
isEditable: false,
|
||||||
@@ -22,8 +22,8 @@ enum RoomTimelineItemFixtures {
|
|||||||
sender: .init(id: "", displayName: "Jacob"),
|
sender: .init(id: "", displayName: "Jacob"),
|
||||||
content: .init(body: "That looks so good!"),
|
content: .init(body: "That looks so good!"),
|
||||||
properties: RoomTimelineItemProperties(isEdited: true)),
|
properties: RoomTimelineItemProperties(isEdited: true)),
|
||||||
TextRoomTimelineItem(id: .event(uniqueID: .init("RoomTimelineItemFixtures.default.1"),
|
TextRoomTimelineItem(id: .event(uniqueID: .init("TimelineFixtures.default.1"),
|
||||||
eventOrTransactionID: .eventID("RoomTimelineItemFixtures.default.1")),
|
eventOrTransactionID: .eventID("TimelineFixtures.default.1")),
|
||||||
timestamp: .mock,
|
timestamp: .mock,
|
||||||
isOutgoing: false,
|
isOutgoing: false,
|
||||||
isEditable: false,
|
isEditable: false,
|
||||||
@@ -33,8 +33,8 @@ enum RoomTimelineItemFixtures {
|
|||||||
properties: RoomTimelineItemProperties(reactions: [
|
properties: RoomTimelineItemProperties(reactions: [
|
||||||
AggregatedReaction(accountOwnerID: "me", key: "🙌", senders: [ReactionSender(id: "me", timestamp: Date())])
|
AggregatedReaction(accountOwnerID: "me", key: "🙌", senders: [ReactionSender(id: "me", timestamp: Date())])
|
||||||
])),
|
])),
|
||||||
TextRoomTimelineItem(id: .event(uniqueID: .init("RoomTimelineItemFixtures.default.2"),
|
TextRoomTimelineItem(id: .event(uniqueID: .init("TimelineFixtures.default.2"),
|
||||||
eventOrTransactionID: .eventID("RoomTimelineItemFixtures.default.2")),
|
eventOrTransactionID: .eventID("TimelineFixtures.default.2")),
|
||||||
timestamp: .mock,
|
timestamp: .mock,
|
||||||
isOutgoing: false,
|
isOutgoing: false,
|
||||||
isEditable: false,
|
isEditable: false,
|
||||||
@@ -52,8 +52,8 @@ enum RoomTimelineItemFixtures {
|
|||||||
])
|
])
|
||||||
])),
|
])),
|
||||||
SeparatorRoomTimelineItem(id: .virtual(uniqueID: .init("Today")), timestamp: .mock),
|
SeparatorRoomTimelineItem(id: .virtual(uniqueID: .init("Today")), timestamp: .mock),
|
||||||
TextRoomTimelineItem(id: .event(uniqueID: .init("RoomTimelineItemFixtures.default.3"),
|
TextRoomTimelineItem(id: .event(uniqueID: .init("TimelineFixtures.default.3"),
|
||||||
eventOrTransactionID: .eventID("RoomTimelineItemFixtures.default.3")),
|
eventOrTransactionID: .eventID("TimelineFixtures.default.3")),
|
||||||
timestamp: .mock,
|
timestamp: .mock,
|
||||||
isOutgoing: false,
|
isOutgoing: false,
|
||||||
isEditable: false,
|
isEditable: false,
|
||||||
@@ -61,16 +61,16 @@ enum RoomTimelineItemFixtures {
|
|||||||
sender: .init(id: "", displayName: "Helena"),
|
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!"),
|
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)])),
|
properties: RoomTimelineItemProperties(orderedReadReceipts: [ReadReceipt(userID: "alice", formattedTimestamp: nil)])),
|
||||||
TextRoomTimelineItem(id: .event(uniqueID: .init("RoomTimelineItemFixtures.default.4"),
|
TextRoomTimelineItem(id: .event(uniqueID: .init("TimelineFixtures.default.4"),
|
||||||
eventOrTransactionID: .eventID("RoomTimelineItemFixtures.default.4")),
|
eventOrTransactionID: .eventID("TimelineFixtures.default.4")),
|
||||||
timestamp: .mock,
|
timestamp: .mock,
|
||||||
isOutgoing: true,
|
isOutgoing: true,
|
||||||
isEditable: true,
|
isEditable: true,
|
||||||
canBeRepliedTo: true,
|
canBeRepliedTo: true,
|
||||||
sender: .init(id: "", displayName: "Bob"),
|
sender: .init(id: "", displayName: "Bob"),
|
||||||
content: .init(body: "And John's speech was amazing!")),
|
content: .init(body: "And John's speech was amazing!")),
|
||||||
TextRoomTimelineItem(id: .event(uniqueID: .init("RoomTimelineItemFixtures.default.5"),
|
TextRoomTimelineItem(id: .event(uniqueID: .init("TimelineFixtures.default.5"),
|
||||||
eventOrTransactionID: .eventID("RoomTimelineItemFixtures.default.5")),
|
eventOrTransactionID: .eventID("TimelineFixtures.default.5")),
|
||||||
timestamp: .mock,
|
timestamp: .mock,
|
||||||
isOutgoing: true,
|
isOutgoing: true,
|
||||||
isEditable: true,
|
isEditable: true,
|
||||||
@@ -82,8 +82,8 @@ enum RoomTimelineItemFixtures {
|
|||||||
ReadReceipt(userID: "bob", formattedTimestamp: nil),
|
ReadReceipt(userID: "bob", formattedTimestamp: nil),
|
||||||
ReadReceipt(userID: "charlie", formattedTimestamp: nil),
|
ReadReceipt(userID: "charlie", formattedTimestamp: nil),
|
||||||
ReadReceipt(userID: "dan", formattedTimestamp: nil)])),
|
ReadReceipt(userID: "dan", formattedTimestamp: nil)])),
|
||||||
TextRoomTimelineItem(id: .event(uniqueID: .init("RoomTimelineItemFixtures.default.6"),
|
TextRoomTimelineItem(id: .event(uniqueID: .init("TimelineFixtures.default.6"),
|
||||||
eventOrTransactionID: .eventID("RoomTimelineItemFixtures.default.6")),
|
eventOrTransactionID: .eventID("TimelineFixtures.default.6")),
|
||||||
timestamp: .mock,
|
timestamp: .mock,
|
||||||
isOutgoing: false,
|
isOutgoing: false,
|
||||||
isEditable: false,
|
isEditable: false,
|
||||||
@@ -248,7 +248,7 @@ enum RoomTimelineItemFixtures {
|
|||||||
|
|
||||||
// MARK: - Private helpers
|
// MARK: - Private helpers
|
||||||
|
|
||||||
private extension RoomTimelineItemFixtures {
|
private extension TimelineFixtures {
|
||||||
static let factory = RoomTimelineItemFactory(userID: "@alice:matrix.org",
|
static let factory = RoomTimelineItemFactory(userID: "@alice:matrix.org",
|
||||||
attributedStringBuilder: AttributedStringBuilder(mentionBuilder: MentionBuilder()),
|
attributedStringBuilder: AttributedStringBuilder(mentionBuilder: MentionBuilder()),
|
||||||
stateEventStringBuilder: RoomStateEventStringBuilder(userID: "@alice:matrix.org"))
|
stateEventStringBuilder: RoomStateEventStringBuilder(userID: "@alice:matrix.org"))
|
||||||
@@ -273,7 +273,7 @@ extension TimelineItemProxy {
|
|||||||
private extension TimelineItemProxy {
|
private extension TimelineItemProxy {
|
||||||
func buildRoomTimelineItem() -> RoomTimelineItemProtocol {
|
func buildRoomTimelineItem() -> RoomTimelineItemProtocol {
|
||||||
guard case .event(let eventProxy) = self,
|
guard case .event(let eventProxy) = self,
|
||||||
let item = RoomTimelineItemFixtures.factory.buildTimelineItem(for: eventProxy, isDM: false) else {
|
let item = TimelineFixtures.factory.buildTimelineItem(for: eventProxy, isDM: false) else {
|
||||||
fatalError()
|
fatalError()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -309,7 +309,7 @@ class MockScreen: Identifiable {
|
|||||||
return navigationStackCoordinator
|
return navigationStackCoordinator
|
||||||
case .roomSmallTimeline:
|
case .roomSmallTimeline:
|
||||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||||
let timelineController = TimelineControllerMock(.init(timelineItems: RoomTimelineItemFixtures.smallChunk))
|
let timelineController = TimelineControllerMock(.init(timelineItems: TimelineFixtures.smallChunk))
|
||||||
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "New room", avatarURL: .mockMXCAvatar)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "New room", avatarURL: .mockMXCAvatar)),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
@@ -330,7 +330,7 @@ class MockScreen: Identifiable {
|
|||||||
return navigationStackCoordinator
|
return navigationStackCoordinator
|
||||||
case .roomSmallTimelineWithReactions:
|
case .roomSmallTimelineWithReactions:
|
||||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||||
let timelineController = TimelineControllerMock(.init(timelineItems: RoomTimelineItemFixtures.default))
|
let timelineController = TimelineControllerMock(.init(timelineItems: TimelineFixtures.default))
|
||||||
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "New room", avatarURL: .mockMXCAvatar)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "New room", avatarURL: .mockMXCAvatar)),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
@@ -350,7 +350,7 @@ class MockScreen: Identifiable {
|
|||||||
return navigationStackCoordinator
|
return navigationStackCoordinator
|
||||||
case .roomSmallTimelineWithReadReceipts:
|
case .roomSmallTimelineWithReadReceipts:
|
||||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||||
let timelineController = TimelineControllerMock(.init(timelineItems: RoomTimelineItemFixtures.smallChunkWithReadReceipts))
|
let timelineController = TimelineControllerMock(.init(timelineItems: TimelineFixtures.smallChunkWithReadReceipts))
|
||||||
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "New room", avatarURL: .mockMXCAvatar)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "New room", avatarURL: .mockMXCAvatar)),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
@@ -371,10 +371,10 @@ class MockScreen: Identifiable {
|
|||||||
case .roomSmallTimelineIncomingAndSmallPagination:
|
case .roomSmallTimelineIncomingAndSmallPagination:
|
||||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||||
|
|
||||||
let itemProvider = SignallingTimelineItemProviderMock(itemProxies: RoomTimelineItemFixtures.smallChunkProxies,
|
let itemProvider = SignallingTimelineItemProviderMock(itemProxies: TimelineFixtures.smallChunkProxies,
|
||||||
listenForSignals: true)
|
listenForSignals: true)
|
||||||
itemProvider.backPaginationResponses = [RoomTimelineItemFixtures.singleMessageChunkProxies]
|
itemProvider.backPaginationResponses = [TimelineFixtures.singleMessageChunkProxies]
|
||||||
itemProvider.incomingItems = [RoomTimelineItemFixtures.incomingMessageProxy]
|
itemProvider.incomingItems = [TimelineFixtures.incomingMessageProxy]
|
||||||
let roomProxy = JoinedRoomProxyMock(.init(name: "Small timeline", avatarURL: .mockMXCAvatar))
|
let roomProxy = JoinedRoomProxyMock(.init(name: "Small timeline", avatarURL: .mockMXCAvatar))
|
||||||
let timelineController = makeSignallingTimelineController(itemProvider: itemProvider, roomProxy: roomProxy)
|
let timelineController = makeSignallingTimelineController(itemProvider: itemProvider, roomProxy: roomProxy)
|
||||||
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
@@ -398,9 +398,9 @@ class MockScreen: Identifiable {
|
|||||||
case .roomSmallTimelineLargePagination:
|
case .roomSmallTimelineLargePagination:
|
||||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||||
|
|
||||||
let itemProvider = SignallingTimelineItemProviderMock(itemProxies: RoomTimelineItemFixtures.smallChunkProxies,
|
let itemProvider = SignallingTimelineItemProviderMock(itemProxies: TimelineFixtures.smallChunkProxies,
|
||||||
listenForSignals: true)
|
listenForSignals: true)
|
||||||
itemProvider.backPaginationResponses = [RoomTimelineItemFixtures.largeChunkProxies]
|
itemProvider.backPaginationResponses = [TimelineFixtures.largeChunkProxies]
|
||||||
let roomProxy = JoinedRoomProxyMock(.init(name: "Small timeline, paginating", avatarURL: .mockMXCAvatar))
|
let roomProxy = JoinedRoomProxyMock(.init(name: "Small timeline, paginating", avatarURL: .mockMXCAvatar))
|
||||||
let timelineController = makeSignallingTimelineController(itemProvider: itemProvider, roomProxy: roomProxy)
|
let timelineController = makeSignallingTimelineController(itemProvider: itemProvider, roomProxy: roomProxy)
|
||||||
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
@@ -423,9 +423,9 @@ class MockScreen: Identifiable {
|
|||||||
case .roomLayoutTop:
|
case .roomLayoutTop:
|
||||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||||
|
|
||||||
let itemProvider = SignallingTimelineItemProviderMock(itemProxies: RoomTimelineItemFixtures.largeChunkProxies,
|
let itemProvider = SignallingTimelineItemProviderMock(itemProxies: TimelineFixtures.largeChunkProxies,
|
||||||
listenForSignals: true)
|
listenForSignals: true)
|
||||||
itemProvider.backPaginationResponses = [RoomTimelineItemFixtures.largeChunkProxies]
|
itemProvider.backPaginationResponses = [TimelineFixtures.largeChunkProxies]
|
||||||
let roomProxy = JoinedRoomProxyMock(.init(name: "Large timeline", avatarURL: .mockMXCAvatar))
|
let roomProxy = JoinedRoomProxyMock(.init(name: "Large timeline", avatarURL: .mockMXCAvatar))
|
||||||
let timelineController = makeSignallingTimelineController(itemProvider: itemProvider, roomProxy: roomProxy)
|
let timelineController = makeSignallingTimelineController(itemProvider: itemProvider, roomProxy: roomProxy)
|
||||||
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
@@ -449,10 +449,10 @@ class MockScreen: Identifiable {
|
|||||||
case .roomLayoutMiddle:
|
case .roomLayoutMiddle:
|
||||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||||
|
|
||||||
let itemProvider = SignallingTimelineItemProviderMock(itemProxies: RoomTimelineItemFixtures.largeChunkProxies,
|
let itemProvider = SignallingTimelineItemProviderMock(itemProxies: TimelineFixtures.largeChunkProxies,
|
||||||
listenForSignals: true)
|
listenForSignals: true)
|
||||||
itemProvider.backPaginationResponses = [RoomTimelineItemFixtures.largeChunkProxies]
|
itemProvider.backPaginationResponses = [TimelineFixtures.largeChunkProxies]
|
||||||
itemProvider.incomingItems = [RoomTimelineItemFixtures.incomingMessageProxy]
|
itemProvider.incomingItems = [TimelineFixtures.incomingMessageProxy]
|
||||||
let roomProxy = JoinedRoomProxyMock(.init(name: "Large timeline", avatarURL: .mockMXCAvatar))
|
let roomProxy = JoinedRoomProxyMock(.init(name: "Large timeline", avatarURL: .mockMXCAvatar))
|
||||||
let timelineController = makeSignallingTimelineController(itemProvider: itemProvider, roomProxy: roomProxy)
|
let timelineController = makeSignallingTimelineController(itemProvider: itemProvider, roomProxy: roomProxy)
|
||||||
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
@@ -476,9 +476,9 @@ class MockScreen: Identifiable {
|
|||||||
case .roomLayoutBottom:
|
case .roomLayoutBottom:
|
||||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||||
|
|
||||||
let itemProvider = SignallingTimelineItemProviderMock(itemProxies: RoomTimelineItemFixtures.largeChunkProxies,
|
let itemProvider = SignallingTimelineItemProviderMock(itemProxies: TimelineFixtures.largeChunkProxies,
|
||||||
listenForSignals: true)
|
listenForSignals: true)
|
||||||
itemProvider.incomingItems = [RoomTimelineItemFixtures.incomingMessageProxy]
|
itemProvider.incomingItems = [TimelineFixtures.incomingMessageProxy]
|
||||||
let roomProxy = JoinedRoomProxyMock(.init(name: "Large timeline", avatarURL: .mockMXCAvatar))
|
let roomProxy = JoinedRoomProxyMock(.init(name: "Large timeline", avatarURL: .mockMXCAvatar))
|
||||||
let timelineController = makeSignallingTimelineController(itemProvider: itemProvider, roomProxy: roomProxy)
|
let timelineController = makeSignallingTimelineController(itemProvider: itemProvider, roomProxy: roomProxy)
|
||||||
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
@@ -502,7 +502,7 @@ class MockScreen: Identifiable {
|
|||||||
case .roomLayoutHighlight:
|
case .roomLayoutHighlight:
|
||||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||||
|
|
||||||
let timelineController = TimelineControllerMock(.init(timelineItems: RoomTimelineItemFixtures.permalinkChunk))
|
let timelineController = TimelineControllerMock(.init(timelineItems: TimelineFixtures.permalinkChunk))
|
||||||
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "Timeline highlight", avatarURL: .mockMXCAvatar)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "Timeline highlight", avatarURL: .mockMXCAvatar)),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
@@ -537,7 +537,7 @@ class MockScreen: Identifiable {
|
|||||||
case .roomWithDisclosedPolls:
|
case .roomWithDisclosedPolls:
|
||||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||||
|
|
||||||
let timelineController = TimelineControllerMock(.init(timelineItems: RoomTimelineItemFixtures.disclosedPolls))
|
let timelineController = TimelineControllerMock(.init(timelineItems: TimelineFixtures.disclosedPolls))
|
||||||
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "Polls timeline", avatarURL: .mockMXCAvatar)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "Polls timeline", avatarURL: .mockMXCAvatar)),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
@@ -559,7 +559,7 @@ class MockScreen: Identifiable {
|
|||||||
case .roomWithUndisclosedPolls:
|
case .roomWithUndisclosedPolls:
|
||||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||||
|
|
||||||
let timelineController = TimelineControllerMock(.init(timelineItems: RoomTimelineItemFixtures.undisclosedPolls))
|
let timelineController = TimelineControllerMock(.init(timelineItems: TimelineFixtures.undisclosedPolls))
|
||||||
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "Polls timeline", avatarURL: .mockMXCAvatar)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "Polls timeline", avatarURL: .mockMXCAvatar)),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
@@ -581,7 +581,7 @@ class MockScreen: Identifiable {
|
|||||||
case .roomWithOutgoingPolls:
|
case .roomWithOutgoingPolls:
|
||||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||||
|
|
||||||
let timelineController = TimelineControllerMock(.init(timelineItems: RoomTimelineItemFixtures.outgoingPolls))
|
let timelineController = TimelineControllerMock(.init(timelineItems: TimelineFixtures.outgoingPolls))
|
||||||
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "Polls timeline", avatarURL: .mockMXCAvatar)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "Polls timeline", avatarURL: .mockMXCAvatar)),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
@@ -635,7 +635,7 @@ class MockScreen: Identifiable {
|
|||||||
let appMediator = AppMediatorMock(.init())
|
let appMediator = AppMediatorMock(.init())
|
||||||
appMediator.windowManager = windowManager
|
appMediator.windowManager = windowManager
|
||||||
|
|
||||||
let itemProvider = SignallingTimelineItemProviderMock(itemProxies: RoomTimelineItemFixtures.largeChunkProxies)
|
let itemProvider = SignallingTimelineItemProviderMock(itemProxies: TimelineFixtures.largeChunkProxies)
|
||||||
|
|
||||||
let timelineController = makeSignallingTimelineController(itemProvider: itemProvider,
|
let timelineController = makeSignallingTimelineController(itemProvider: itemProvider,
|
||||||
roomProxy: JoinedRoomProxyMock(.init()))
|
roomProxy: JoinedRoomProxyMock(.init()))
|
||||||
|
|||||||
@@ -239,7 +239,7 @@ struct TimelineMediaPreviewDataSourceTests {
|
|||||||
// MARK: Helpers
|
// MARK: Helpers
|
||||||
|
|
||||||
func newChunk() -> [EventBasedMessageTimelineItemProtocol] {
|
func newChunk() -> [EventBasedMessageTimelineItemProtocol] {
|
||||||
RoomTimelineItemFixtures.mediaChunk
|
TimelineFixtures.mediaChunk
|
||||||
.compactMap { $0 as? EventBasedMessageTimelineItemProtocol }
|
.compactMap { $0 as? EventBasedMessageTimelineItemProtocol }
|
||||||
.filter(\.supportsMediaCaption) // Voice messages can't be previewed (and don't support captions).
|
.filter(\.supportsMediaCaption) // Voice messages can't be previewed (and don't support captions).
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user