From dc91a0d5e98f721bcd70dfb1db7ba415b95dd55b Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Tue, 2 Jun 2026 14:55:23 +0300 Subject: [PATCH] Move the old `MockTimelineController` to the mocks folder and `TimelineControllerMock` --- ElementX.xcodeproj/project.pbxproj | 8 +-- .../TimelineControllerMock.swift} | 54 +++++++++---------- 2 files changed, 31 insertions(+), 31 deletions(-) rename ElementX/Sources/{Services/Timeline/TimelineController/MockTimelineController.swift => Mocks/TimelineControllerMock.swift} (85%) diff --git a/ElementX.xcodeproj/project.pbxproj b/ElementX.xcodeproj/project.pbxproj index cf365ef51..24f59b0a2 100644 --- a/ElementX.xcodeproj/project.pbxproj +++ b/ElementX.xcodeproj/project.pbxproj @@ -495,7 +495,6 @@ 51B3B19FA5F91B455C807BA7 /* RoomPollsHistoryScreenModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E964AF2DFEB31E2B799999F /* RoomPollsHistoryScreenModels.swift */; }; 522269133E6F65F68482F4F4 /* RemotePreferenceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 181CF280BC8E3F335AFCB4B8 /* RemotePreferenceTests.swift */; }; 52473A4D7B1FBD4CD1E770C8 /* MatrixEntityRegex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AD1A853D605C2146B0DC028 /* MatrixEntityRegex.swift */; }; - 530C2238E40F71223327FC95 /* MockTimelineController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BA8082E26C77A2C587B34B3 /* MockTimelineController.swift */; }; 5341D48F833E3E30F16FA2A3 /* SeparatorRoomTimelineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2910422CB628D3B2BBE47449 /* SeparatorRoomTimelineView.swift */; }; 5375902175B2FEA2949D7D74 /* LoginScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CDDDDD9FE1A699D23A5E096 /* LoginScreen.swift */; }; 53A55748D5F587C9061F98BF /* ServerConfigurationScreenViewStateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 277C20CDD5B64510401B6D0D /* ServerConfigurationScreenViewStateTests.swift */; }; @@ -1325,6 +1324,7 @@ DC77E9DB2CFBE84A2BDF20C5 /* RoomRolesAndPermissionsFlowCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0833F51229E166BCA141D004 /* RoomRolesAndPermissionsFlowCoordinator.swift */; }; DCFE7CB3B9A104330BBB96AD /* AnalyticsPromptScreenCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B67DF223EEB8DCAF178A1D4 /* AnalyticsPromptScreenCoordinator.swift */; }; DD21CE51DF9BD04FC8155972 /* LeaveSpaceHandleSDKMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 580BDCD23DD02481AB5FFB47 /* LeaveSpaceHandleSDKMock.swift */; }; + DD4D8B5D668197D345A3ED42 /* TimelineControllerMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = F933BB25FC426D5C67E1D812 /* TimelineControllerMock.swift */; }; DDE7B4771452300C103B1EB8 /* RoomDirectoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F6210134203BE1F2DD5C679 /* RoomDirectoryCell.swift */; }; DDFBDEE1DC32BDD5488F898C /* ClientProxyMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2F96CCBEAAA7F2185BFA354 /* ClientProxyMock.swift */; }; DE3BF0ED68E56BF625591D49 /* LinkNewDeviceScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72C4A2D279386A811BDC6DAE /* LinkNewDeviceScreen.swift */; }; @@ -1802,7 +1802,6 @@ 1B8E176484A89BAC389D4076 /* RoomMembersListScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomMembersListScreen.swift; sourceTree = ""; }; 1B9D191A81FFB0C72CE73E77 /* RoomSelectionScreenModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomSelectionScreenModels.swift; sourceTree = ""; }; 1BA5A62DA4B543827FF82354 /* LAContextMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LAContextMock.swift; sourceTree = ""; }; - 1BA8082E26C77A2C587B34B3 /* MockTimelineController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockTimelineController.swift; sourceTree = ""; }; 1BC752C2A4606C4C2D1ADB41 /* 94 */ = {isa = PBXFileReference; path = 94; sourceTree = ""; }; 1BEE119165C106FA83F253EF /* AnalyticsServiceMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalyticsServiceMock.swift; sourceTree = ""; }; 1C21A715237F2B6D6E80998C /* SecureBackupControllerProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureBackupControllerProtocol.swift; sourceTree = ""; }; @@ -3057,6 +3056,7 @@ F899D02CF26EA7675EEBE74C /* UserSessionScreenTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserSessionScreenTests.swift; sourceTree = ""; }; F8CCF9A924521DECA44778C4 /* AppLockSetupBiometricsScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppLockSetupBiometricsScreen.swift; sourceTree = ""; }; F91AC45CDDF85E946391CA5C /* RoomThreadListScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomThreadListScreenViewModel.swift; sourceTree = ""; }; + F933BB25FC426D5C67E1D812 /* TimelineControllerMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineControllerMock.swift; sourceTree = ""; }; F968FDB68F9D4CB9010FED70 /* TimelineStateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineStateTests.swift; sourceTree = ""; }; F9E543072DE58E751F028998 /* TimelineProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineProxy.swift; sourceTree = ""; }; FA2397174D0DC3918A7A8A7B /* AnalyticsConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalyticsConfiguration.swift; sourceTree = ""; }; @@ -3758,7 +3758,6 @@ 2F2FED77226A43559F009463 /* TimelineController */ = { isa = PBXGroup; children = ( - 1BA8082E26C77A2C587B34B3 /* MockTimelineController.swift */, A4216C12C0369A8AB059EDE9 /* TimelineController.swift */, 8C0D5AE752AF87DA0A920812 /* TimelineControllerFactory.swift */, 7AC1E3FE9B59EA094867863E /* TimelineControllerFactoryProtocol.swift */, @@ -3845,6 +3844,7 @@ 7DB2A5FF1E68BA580A20D405 /* SpaceRoomListProxyMock.swift */, EF36FC3DE25B20B7FA91F1FD /* SpaceServiceProxyMock.swift */, B0F5CC38803B8382D2C63222 /* TimelineControllerFactoryMock.swift */, + F933BB25FC426D5C67E1D812 /* TimelineControllerMock.swift */, 62EACAFB3F3E017060F9F1C5 /* TimelineProviderMock.swift */, 17A8AA0DFA06012A9DAB951E /* TimelineProxyMock.swift */, 8536B40F578BA7FDB23D97B1 /* UserIdentityProxyMock.swift */, @@ -8629,7 +8629,6 @@ C13128AAA787A4C2CBE4EE82 /* MessageForwardingScreenViewModelProtocol.swift in Sources */, C97325EFDCCEE457432A9E82 /* MessageText.swift in Sources */, AF2ABA2794E376B64104C964 /* MockSoftLogoutScreenState.swift in Sources */, - 530C2238E40F71223327FC95 /* MockTimelineController.swift in Sources */, E938F7A45D6A3DBBE6789A03 /* NSEUserSession.swift in Sources */, 551E03A935A6B73158A1AB4A /* NSEUserSessionMock.swift in Sources */, F9842667B68DC6FA1F9ECCBB /* NSItemProvider.swift in Sources */, @@ -9071,6 +9070,7 @@ 7DCFC31B49BDD2BC32184E58 /* TimelineControllerFactory.swift in Sources */, 63FD7DBE7BBA149B4B8B99D7 /* TimelineControllerFactoryMock.swift in Sources */, B47213F07A67CE3A8D49CEC9 /* TimelineControllerFactoryProtocol.swift in Sources */, + DD4D8B5D668197D345A3ED42 /* TimelineControllerMock.swift in Sources */, FA53FA227FFBE469AFF32F71 /* TimelineControllerProtocol.swift in Sources */, 798BF3072137833FBD3F4C96 /* TimelineDeliveryStatusView.swift in Sources */, 22BA593A5E19D8D3DE2FAA6F /* TimelineEventContent.swift in Sources */, diff --git a/ElementX/Sources/Services/Timeline/TimelineController/MockTimelineController.swift b/ElementX/Sources/Mocks/TimelineControllerMock.swift similarity index 85% rename from ElementX/Sources/Services/Timeline/TimelineController/MockTimelineController.swift rename to ElementX/Sources/Mocks/TimelineControllerMock.swift index 4ab5f6eeb..0e2857b06 100644 --- a/ElementX/Sources/Services/Timeline/TimelineController/MockTimelineController.swift +++ b/ElementX/Sources/Mocks/TimelineControllerMock.swift @@ -81,29 +81,29 @@ extension TimelineControllerMock { editMessageHtmlIntentionalMentionsClosure = { [weak self] _, message, _, _ in guard let self else { return } - self.callbacks.send(.messageSentOrEdited) - self.timelineItems[self.timelineItems.endIndex - 1] = TextRoomTimelineItem(id: lastInsertedMessageID, - timestamp: .distantFuture, - isOutgoing: true, - isEditable: true, - canBeRepliedTo: true, - sender: .test, - content: .init(body: message), - properties: .init(isEdited: true)) - self.callbacks.send(.updatedTimelineItems(timelineItems: self.timelineItems, isSwitchingTimelines: false)) + callbacks.send(.messageSentOrEdited) + timelineItems[timelineItems.endIndex - 1] = TextRoomTimelineItem(id: lastInsertedMessageID, + timestamp: .distantFuture, + isOutgoing: true, + isEditable: true, + canBeRepliedTo: true, + sender: .test, + content: .init(body: message), + properties: .init(isEdited: true)) + callbacks.send(.updatedTimelineItems(timelineItems: timelineItems, isSwitchingTimelines: false)) } sendMessageHtmlInReplyToEventIDIntentionalMentionsClosure = { [weak self] message, _, _, _ in guard let self else { return } - self.callbacks.send(.messageSentOrEdited) - self.timelineItems.append(TextRoomTimelineItem(id: lastInsertedMessageID, - timestamp: .distantFuture, - isOutgoing: true, - isEditable: true, - canBeRepliedTo: true, - sender: .test, - content: .init(body: message))) - self.callbacks.send(.updatedTimelineItems(timelineItems: self.timelineItems, isSwitchingTimelines: false)) + callbacks.send(.messageSentOrEdited) + timelineItems.append(TextRoomTimelineItem(id: lastInsertedMessageID, + timestamp: .distantFuture, + isOutgoing: true, + isEditable: true, + canBeRepliedTo: true, + sender: .test, + content: .init(body: message))) + callbacks.send(.updatedTimelineItems(timelineItems: timelineItems, isSwitchingTimelines: false)) } sendAudioUrlAudioInfoCaptionRequestHandleClosure = { [weak self, timelineProxy] url, audioInfo, caption, requestHandle in @@ -225,23 +225,23 @@ extension TimelineControllerMock { guard let self else { return .success(()) } let paginating = TimelinePaginationState(backward: .paginating, forward: .endReached) - self.paginationState = paginating - self.callbacks.send(.paginationState(paginating)) + paginationState = paginating + callbacks.send(.paginationState(paginating)) guard !queue.isEmpty else { let end = TimelinePaginationState(backward: .endReached, forward: .endReached) - self.paginationState = end - self.callbacks.send(.paginationState(end)) + paginationState = end + callbacks.send(.paginationState(end)) return .success(()) } let newItems = queue.removeFirst() - self.timelineItems.insert(contentsOf: newItems, at: 0) - self.callbacks.send(.updatedTimelineItems(timelineItems: self.timelineItems, isSwitchingTimelines: false)) + timelineItems.insert(contentsOf: newItems, at: 0) + callbacks.send(.updatedTimelineItems(timelineItems: timelineItems, isSwitchingTimelines: false)) let final = TimelinePaginationState(backward: queue.isEmpty ? .endReached : .idle, forward: .endReached) - self.paginationState = final - self.callbacks.send(.paginationState(final)) + paginationState = final + callbacks.send(.paginationState(final)) return .success(()) }