mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 06:55:59 +00:00
RoomTimeline… refactor (drop the Room). (#3728)
* Add the timeline controller factory to the timeline view model. In preparation for building a timeline to swipe through media in QuickLook. * Refactor RoomTimelineControllerFactory. * Refactor RoomTimelineController. * Refactor RoomTimelineProvider.
This commit is contained in:
@@ -40,7 +40,7 @@ class TimelineViewModelTests: XCTestCase {
|
||||
]
|
||||
|
||||
// When showing them in a timeline.
|
||||
let timelineController = MockRoomTimelineController()
|
||||
let timelineController = MockTimelineController()
|
||||
timelineController.timelineItems = items
|
||||
let viewModel = makeViewModel(timelineController: timelineController)
|
||||
|
||||
@@ -68,7 +68,7 @@ class TimelineViewModelTests: XCTestCase {
|
||||
]
|
||||
|
||||
// When showing them in a timeline.
|
||||
let timelineController = MockRoomTimelineController()
|
||||
let timelineController = MockTimelineController()
|
||||
timelineController.timelineItems = items
|
||||
let viewModel = makeViewModel(timelineController: timelineController)
|
||||
|
||||
@@ -94,7 +94,7 @@ class TimelineViewModelTests: XCTestCase {
|
||||
]
|
||||
|
||||
// When showing them in a timeline.
|
||||
let timelineController = MockRoomTimelineController()
|
||||
let timelineController = MockTimelineController()
|
||||
timelineController.timelineItems = items
|
||||
let viewModel = makeViewModel(timelineController: timelineController)
|
||||
|
||||
@@ -117,7 +117,7 @@ class TimelineViewModelTests: XCTestCase {
|
||||
]
|
||||
|
||||
// When showing them in a timeline.
|
||||
let timelineController = MockRoomTimelineController()
|
||||
let timelineController = MockTimelineController()
|
||||
timelineController.timelineItems = items
|
||||
let viewModel = makeViewModel(timelineController: timelineController)
|
||||
|
||||
@@ -140,7 +140,7 @@ class TimelineViewModelTests: XCTestCase {
|
||||
]
|
||||
|
||||
// When showing them in a timeline.
|
||||
let timelineController = MockRoomTimelineController()
|
||||
let timelineController = MockTimelineController()
|
||||
timelineController.timelineItems = items
|
||||
let viewModel = makeViewModel(timelineController: timelineController)
|
||||
|
||||
@@ -157,7 +157,7 @@ class TimelineViewModelTests: XCTestCase {
|
||||
let items = [TextRoomTimelineItem(eventID: "t1"),
|
||||
TextRoomTimelineItem(eventID: "t2"),
|
||||
TextRoomTimelineItem(eventID: "t3")]
|
||||
let timelineController = MockRoomTimelineController()
|
||||
let timelineController = MockTimelineController()
|
||||
timelineController.timelineItems = items
|
||||
|
||||
let viewModel = makeViewModel(timelineController: timelineController)
|
||||
@@ -181,7 +181,7 @@ class TimelineViewModelTests: XCTestCase {
|
||||
let items = [TextRoomTimelineItem(eventID: "t1"),
|
||||
TextRoomTimelineItem(eventID: "t2"),
|
||||
TextRoomTimelineItem(eventID: "t3")]
|
||||
let timelineController = MockRoomTimelineController()
|
||||
let timelineController = MockTimelineController()
|
||||
timelineController.timelineItems = items
|
||||
|
||||
let viewModel = makeViewModel(timelineController: timelineController)
|
||||
@@ -205,7 +205,7 @@ class TimelineViewModelTests: XCTestCase {
|
||||
let items = [TextRoomTimelineItem(eventID: "t1"),
|
||||
TextRoomTimelineItem(eventID: "t2"),
|
||||
TextRoomTimelineItem(eventID: "t3")]
|
||||
let timelineController = MockRoomTimelineController()
|
||||
let timelineController = MockTimelineController()
|
||||
timelineController.timelineItems = items
|
||||
|
||||
let viewModel = makeViewModel(timelineController: timelineController)
|
||||
@@ -230,7 +230,7 @@ class TimelineViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testInitialFocusViewState() async throws {
|
||||
let timelineController = MockRoomTimelineController()
|
||||
let timelineController = MockTimelineController()
|
||||
|
||||
let viewModel = makeViewModel(focussedEventID: "t10", timelineController: timelineController)
|
||||
XCTAssertEqual(viewModel.context.viewState.timelineState.focussedEvent, .init(eventID: "t10", appearance: .immediate))
|
||||
@@ -289,13 +289,13 @@ class TimelineViewModelTests: XCTestCase {
|
||||
private func readReceiptsConfiguration(with items: [RoomTimelineItemProtocol]) -> (TimelineViewModel,
|
||||
JoinedRoomProxyMock,
|
||||
TimelineProxyMock,
|
||||
MockRoomTimelineController) {
|
||||
MockTimelineController) {
|
||||
let roomProxy = JoinedRoomProxyMock(.init(name: ""))
|
||||
|
||||
let timelineProxy = TimelineProxyMock()
|
||||
|
||||
roomProxy.timeline = timelineProxy
|
||||
let timelineController = MockRoomTimelineController()
|
||||
let timelineController = MockTimelineController()
|
||||
|
||||
timelineProxy.sendReadReceiptForTypeReturnValue = .success(())
|
||||
|
||||
@@ -311,7 +311,8 @@ class TimelineViewModelTests: XCTestCase {
|
||||
appMediator: AppMediatorMock.default,
|
||||
appSettings: ServiceLocator.shared.settings,
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings))
|
||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||
return (viewModel, roomProxy, timelineProxy, timelineController)
|
||||
}
|
||||
|
||||
@@ -325,7 +326,7 @@ class TimelineViewModelTests: XCTestCase {
|
||||
let id = message.id
|
||||
|
||||
// When showing them in a timeline.
|
||||
let timelineController = MockRoomTimelineController()
|
||||
let timelineController = MockTimelineController()
|
||||
timelineController.timelineItems = [message]
|
||||
let viewModel = TimelineViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "", members: [RoomMemberProxyMock.mockAlice, RoomMemberProxyMock.mockCharlie])),
|
||||
timelineController: timelineController,
|
||||
@@ -336,7 +337,8 @@ class TimelineViewModelTests: XCTestCase {
|
||||
appMediator: AppMediatorMock.default,
|
||||
appSettings: ServiceLocator.shared.settings,
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings))
|
||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||
|
||||
let deferred = deferFulfillment(viewModel.context.$viewState) { value in
|
||||
value.bindings.readReceiptsSummaryInfo?.orderedReceipts == receipts
|
||||
@@ -356,7 +358,7 @@ class TimelineViewModelTests: XCTestCase {
|
||||
roomProxyMock.underlyingInfoPublisher = infoSubject.asCurrentValuePublisher()
|
||||
|
||||
let viewModel = TimelineViewModel(roomProxy: roomProxyMock,
|
||||
timelineController: MockRoomTimelineController(),
|
||||
timelineController: MockTimelineController(),
|
||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||
@@ -364,7 +366,8 @@ class TimelineViewModelTests: XCTestCase {
|
||||
appMediator: AppMediatorMock.default,
|
||||
appSettings: ServiceLocator.shared.settings,
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings))
|
||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||
XCTAssertEqual(configuration.pinnedEventIDs, viewModel.context.viewState.pinnedEventIDs)
|
||||
|
||||
configuration.pinnedEventIDs = ["test1", "test2"]
|
||||
@@ -382,7 +385,7 @@ class TimelineViewModelTests: XCTestCase {
|
||||
roomProxyMock.underlyingInfoPublisher = infoSubject.asCurrentValuePublisher()
|
||||
|
||||
let viewModel = TimelineViewModel(roomProxy: roomProxyMock,
|
||||
timelineController: MockRoomTimelineController(),
|
||||
timelineController: MockTimelineController(),
|
||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||
@@ -390,7 +393,8 @@ class TimelineViewModelTests: XCTestCase {
|
||||
appMediator: AppMediatorMock.default,
|
||||
appSettings: ServiceLocator.shared.settings,
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings))
|
||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||
|
||||
var deferred = deferFulfillment(viewModel.context.$viewState) { value in
|
||||
value.canCurrentUserPin
|
||||
@@ -409,7 +413,7 @@ class TimelineViewModelTests: XCTestCase {
|
||||
|
||||
private func makeViewModel(roomProxy: JoinedRoomProxyProtocol? = nil,
|
||||
focussedEventID: String? = nil,
|
||||
timelineController: RoomTimelineControllerProtocol) -> TimelineViewModel {
|
||||
timelineController: TimelineControllerProtocol) -> TimelineViewModel {
|
||||
TimelineViewModel(roomProxy: roomProxy ?? JoinedRoomProxyMock(.init(name: "")),
|
||||
focussedEventID: focussedEventID,
|
||||
timelineController: timelineController,
|
||||
@@ -420,7 +424,8 @@ class TimelineViewModelTests: XCTestCase {
|
||||
appMediator: AppMediatorMock.default,
|
||||
appSettings: ServiceLocator.shared.settings,
|
||||
analyticsService: ServiceLocator.shared.analytics,
|
||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings))
|
||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user