From 3acedc87d45b5420068e530e08b85c8e46c45c34 Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Wed, 22 Jan 2025 09:36:33 +0200 Subject: [PATCH] Bump the RustSDK to v25.01.22 and use the new timeline building API --- ElementX.xcodeproj/project.pbxproj | 4 +- .../xcshareddata/swiftpm/Package.resolved | 4 +- .../Mocks/Generated/SDKGeneratedMocks.swift | 204 +++--------------- .../Services/Room/JoinedRoomProxy.swift | 29 ++- project.yml | 2 +- 5 files changed, 52 insertions(+), 191 deletions(-) diff --git a/ElementX.xcodeproj/project.pbxproj b/ElementX.xcodeproj/project.pbxproj index 24d8de2542..7a7215ad4e 100644 --- a/ElementX.xcodeproj/project.pbxproj +++ b/ElementX.xcodeproj/project.pbxproj @@ -1365,6 +1365,7 @@ 04DF593C3F7AF4B2FBAEB05D /* FileManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileManager.swift; sourceTree = ""; }; 0516C69708D5CBDE1A8E77EC /* RoomDirectorySearchProxyProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomDirectorySearchProxyProtocol.swift; sourceTree = ""; }; 052B2F924572AFD70B5F500E /* StartChatScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StartChatScreenViewModel.swift; sourceTree = ""; }; + 0545AC444BEEA89FF8C509FD /* zh-Hant-TW */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant-TW"; path = "zh-Hant-TW.lproj/InfoPlist.strings"; sourceTree = ""; }; 054F469E433864CC6FE6EE8E /* ServerSelectionUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerSelectionUITests.swift; sourceTree = ""; }; 05512FB13987D221B7205DE0 /* HomeScreenRecoveryKeyConfirmationBanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeScreenRecoveryKeyConfirmationBanner.swift; sourceTree = ""; }; 0554FEA301486A8CFA475D5A /* AuthenticationClientBuilderFactoryMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationClientBuilderFactoryMock.swift; sourceTree = ""; }; @@ -7880,6 +7881,7 @@ 969694F67E844FCA51F7E051 /* sv */, D66B5D86A9AB95E0E01BED82 /* uk */, FF720BA68256297680980481 /* zh-Hans */, + 0545AC444BEEA89FF8C509FD /* zh-Hant-TW */, ); name = InfoPlist.strings; sourceTree = ""; @@ -8498,7 +8500,7 @@ repositoryURL = "https://github.com/element-hq/matrix-rust-components-swift"; requirement = { kind = exactVersion; - version = 25.01.15; + version = 25.01.22; }; }; 701C7BEF8F70F7A83E852DCC /* XCRemoteSwiftPackageReference "GZIP" */ = { diff --git a/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 9c5002ccfa..796bd41d72 100644 --- a/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -149,8 +149,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/element-hq/matrix-rust-components-swift", "state" : { - "revision" : "f7460b89b3d7789da40c7af53f3b3e01ec209932", - "version" : "25.1.15" + "revision" : "0851aa6271d6aee77612f87638a5e30e45b3a7f8", + "version" : "25.1.22" } }, { diff --git a/ElementX/Sources/Mocks/Generated/SDKGeneratedMocks.swift b/ElementX/Sources/Mocks/Generated/SDKGeneratedMocks.swift index 9e04a6116c..631e2f1e38 100644 --- a/ElementX/Sources/Mocks/Generated/SDKGeneratedMocks.swift +++ b/ElementX/Sources/Mocks/Generated/SDKGeneratedMocks.swift @@ -13237,81 +13237,6 @@ open class RoomSDKMock: MatrixRustSDK.Room, @unchecked Sendable { } } - //MARK: - messageFilteredTimeline - - open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeThrowableError: Error? - var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeUnderlyingCallsCount = 0 - open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeCallsCount: Int { - get { - if Thread.isMainThread { - return messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeUnderlyingCallsCount - } else { - var returnValue: Int? = nil - DispatchQueue.main.sync { - returnValue = messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeUnderlyingCallsCount - } - - return returnValue! - } - } - set { - if Thread.isMainThread { - messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeUnderlyingCallsCount = newValue - } else { - DispatchQueue.main.sync { - messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeUnderlyingCallsCount = newValue - } - } - } - } - open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeCalled: Bool { - return messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeCallsCount > 0 - } - open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeReceivedArguments: (internalIdPrefix: String?, allowedMessageTypes: [RoomMessageEventMessageType], dateDividerMode: DateDividerMode)? - open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeReceivedInvocations: [(internalIdPrefix: String?, allowedMessageTypes: [RoomMessageEventMessageType], dateDividerMode: DateDividerMode)] = [] - - var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeUnderlyingReturnValue: Timeline! - open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeReturnValue: Timeline! { - get { - if Thread.isMainThread { - return messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeUnderlyingReturnValue - } else { - var returnValue: Timeline? = nil - DispatchQueue.main.sync { - returnValue = messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeUnderlyingReturnValue - } - - return returnValue! - } - } - set { - if Thread.isMainThread { - messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeUnderlyingReturnValue = newValue - } else { - DispatchQueue.main.sync { - messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeUnderlyingReturnValue = newValue - } - } - } - } - open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeClosure: ((String?, [RoomMessageEventMessageType], DateDividerMode) async throws -> Timeline)? - - open override func messageFilteredTimeline(internalIdPrefix: String?, allowedMessageTypes: [RoomMessageEventMessageType], dateDividerMode: DateDividerMode) async throws -> Timeline { - if let error = messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeThrowableError { - throw error - } - messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeCallsCount += 1 - messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeReceivedArguments = (internalIdPrefix: internalIdPrefix, allowedMessageTypes: allowedMessageTypes, dateDividerMode: dateDividerMode) - DispatchQueue.main.async { - self.messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeReceivedInvocations.append((internalIdPrefix: internalIdPrefix, allowedMessageTypes: allowedMessageTypes, dateDividerMode: dateDividerMode)) - } - if let messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeClosure = messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeClosure { - return try await messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeClosure(internalIdPrefix, allowedMessageTypes, dateDividerMode) - } else { - return messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeReturnValue - } - } - //MARK: - ownUserId var ownUserIdUnderlyingCallsCount = 0 @@ -13377,81 +13302,6 @@ open class RoomSDKMock: MatrixRustSDK.Room, @unchecked Sendable { } } - //MARK: - pinnedEventsTimeline - - open var pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsThrowableError: Error? - var pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsUnderlyingCallsCount = 0 - open var pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsCallsCount: Int { - get { - if Thread.isMainThread { - return pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsUnderlyingCallsCount - } else { - var returnValue: Int? = nil - DispatchQueue.main.sync { - returnValue = pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsUnderlyingCallsCount - } - - return returnValue! - } - } - set { - if Thread.isMainThread { - pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsUnderlyingCallsCount = newValue - } else { - DispatchQueue.main.sync { - pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsUnderlyingCallsCount = newValue - } - } - } - } - open var pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsCalled: Bool { - return pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsCallsCount > 0 - } - open var pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsReceivedArguments: (internalIdPrefix: String?, maxEventsToLoad: UInt16, maxConcurrentRequests: UInt16)? - open var pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsReceivedInvocations: [(internalIdPrefix: String?, maxEventsToLoad: UInt16, maxConcurrentRequests: UInt16)] = [] - - var pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsUnderlyingReturnValue: Timeline! - open var pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsReturnValue: Timeline! { - get { - if Thread.isMainThread { - return pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsUnderlyingReturnValue - } else { - var returnValue: Timeline? = nil - DispatchQueue.main.sync { - returnValue = pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsUnderlyingReturnValue - } - - return returnValue! - } - } - set { - if Thread.isMainThread { - pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsUnderlyingReturnValue = newValue - } else { - DispatchQueue.main.sync { - pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsUnderlyingReturnValue = newValue - } - } - } - } - open var pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsClosure: ((String?, UInt16, UInt16) async throws -> Timeline)? - - open override func pinnedEventsTimeline(internalIdPrefix: String?, maxEventsToLoad: UInt16, maxConcurrentRequests: UInt16) async throws -> Timeline { - if let error = pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsThrowableError { - throw error - } - pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsCallsCount += 1 - pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsReceivedArguments = (internalIdPrefix: internalIdPrefix, maxEventsToLoad: maxEventsToLoad, maxConcurrentRequests: maxConcurrentRequests) - DispatchQueue.main.async { - self.pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsReceivedInvocations.append((internalIdPrefix: internalIdPrefix, maxEventsToLoad: maxEventsToLoad, maxConcurrentRequests: maxConcurrentRequests)) - } - if let pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsClosure = pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsClosure { - return try await pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsClosure(internalIdPrefix, maxEventsToLoad, maxConcurrentRequests) - } else { - return pinnedEventsTimelineInternalIdPrefixMaxEventsToLoadMaxConcurrentRequestsReturnValue - } - } - //MARK: - publishRoomAliasInRoomDirectory open var publishRoomAliasInRoomDirectoryAliasThrowableError: Error? @@ -14846,18 +14696,18 @@ open class RoomSDKMock: MatrixRustSDK.Room, @unchecked Sendable { } } - //MARK: - timelineFocusedOnEvent + //MARK: - timelineWithConfiguration - open var timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixThrowableError: Error? - var timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixUnderlyingCallsCount = 0 - open var timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixCallsCount: Int { + open var timelineWithConfigurationConfigurationThrowableError: Error? + var timelineWithConfigurationConfigurationUnderlyingCallsCount = 0 + open var timelineWithConfigurationConfigurationCallsCount: Int { get { if Thread.isMainThread { - return timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixUnderlyingCallsCount + return timelineWithConfigurationConfigurationUnderlyingCallsCount } else { var returnValue: Int? = nil DispatchQueue.main.sync { - returnValue = timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixUnderlyingCallsCount + returnValue = timelineWithConfigurationConfigurationUnderlyingCallsCount } return returnValue! @@ -14865,29 +14715,29 @@ open class RoomSDKMock: MatrixRustSDK.Room, @unchecked Sendable { } set { if Thread.isMainThread { - timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixUnderlyingCallsCount = newValue + timelineWithConfigurationConfigurationUnderlyingCallsCount = newValue } else { DispatchQueue.main.sync { - timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixUnderlyingCallsCount = newValue + timelineWithConfigurationConfigurationUnderlyingCallsCount = newValue } } } } - open var timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixCalled: Bool { - return timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixCallsCount > 0 + open var timelineWithConfigurationConfigurationCalled: Bool { + return timelineWithConfigurationConfigurationCallsCount > 0 } - open var timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixReceivedArguments: (eventId: String, numContextEvents: UInt16, internalIdPrefix: String?)? - open var timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixReceivedInvocations: [(eventId: String, numContextEvents: UInt16, internalIdPrefix: String?)] = [] + open var timelineWithConfigurationConfigurationReceivedConfiguration: TimelineConfiguration? + open var timelineWithConfigurationConfigurationReceivedInvocations: [TimelineConfiguration] = [] - var timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixUnderlyingReturnValue: Timeline! - open var timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixReturnValue: Timeline! { + var timelineWithConfigurationConfigurationUnderlyingReturnValue: Timeline! + open var timelineWithConfigurationConfigurationReturnValue: Timeline! { get { if Thread.isMainThread { - return timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixUnderlyingReturnValue + return timelineWithConfigurationConfigurationUnderlyingReturnValue } else { var returnValue: Timeline? = nil DispatchQueue.main.sync { - returnValue = timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixUnderlyingReturnValue + returnValue = timelineWithConfigurationConfigurationUnderlyingReturnValue } return returnValue! @@ -14895,29 +14745,29 @@ open class RoomSDKMock: MatrixRustSDK.Room, @unchecked Sendable { } set { if Thread.isMainThread { - timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixUnderlyingReturnValue = newValue + timelineWithConfigurationConfigurationUnderlyingReturnValue = newValue } else { DispatchQueue.main.sync { - timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixUnderlyingReturnValue = newValue + timelineWithConfigurationConfigurationUnderlyingReturnValue = newValue } } } } - open var timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixClosure: ((String, UInt16, String?) async throws -> Timeline)? + open var timelineWithConfigurationConfigurationClosure: ((TimelineConfiguration) async throws -> Timeline)? - open override func timelineFocusedOnEvent(eventId: String, numContextEvents: UInt16, internalIdPrefix: String?) async throws -> Timeline { - if let error = timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixThrowableError { + open override func timelineWithConfiguration(configuration: TimelineConfiguration) async throws -> Timeline { + if let error = timelineWithConfigurationConfigurationThrowableError { throw error } - timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixCallsCount += 1 - timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixReceivedArguments = (eventId: eventId, numContextEvents: numContextEvents, internalIdPrefix: internalIdPrefix) + timelineWithConfigurationConfigurationCallsCount += 1 + timelineWithConfigurationConfigurationReceivedConfiguration = configuration DispatchQueue.main.async { - self.timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixReceivedInvocations.append((eventId: eventId, numContextEvents: numContextEvents, internalIdPrefix: internalIdPrefix)) + self.timelineWithConfigurationConfigurationReceivedInvocations.append(configuration) } - if let timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixClosure = timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixClosure { - return try await timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixClosure(eventId, numContextEvents, internalIdPrefix) + if let timelineWithConfigurationConfigurationClosure = timelineWithConfigurationConfigurationClosure { + return try await timelineWithConfigurationConfigurationClosure(configuration) } else { - return timelineFocusedOnEventEventIdNumContextEventsInternalIdPrefixReturnValue + return timelineWithConfigurationConfigurationReturnValue } } diff --git a/ElementX/Sources/Services/Room/JoinedRoomProxy.swift b/ElementX/Sources/Services/Room/JoinedRoomProxy.swift index b908355577..9028074ab3 100644 --- a/ElementX/Sources/Services/Room/JoinedRoomProxy.swift +++ b/ElementX/Sources/Services/Room/JoinedRoomProxy.swift @@ -35,10 +35,13 @@ class JoinedRoomProxy: JoinedRoomProxyProtocol { } do { - let timeline = try await TimelineProxy(timeline: room.pinnedEventsTimeline(internalIdPrefix: nil, - maxEventsToLoad: 100, - maxConcurrentRequests: 10), - kind: .pinned) + let sdkTimeline = try await room.timelineWithConfiguration(configuration: .init(focus: .pinnedEvents(maxEventsToLoad: 100, maxConcurrentRequests: 10), + allowedMessageTypes: .all, + internalIdPrefix: nil, + dateDividerMode: .daily)) + + let timeline = TimelineProxy(timeline: sdkTimeline, kind: .pinned) + await timeline.subscribeForUpdates() innerPinnedEventsTimeline = timeline return timeline @@ -155,8 +158,12 @@ class JoinedRoomProxy: JoinedRoomProxyProtocol { func timelineFocusedOnEvent(eventID: String, numberOfEvents: UInt16) async -> Result { do { - let timeline = try await room.timelineFocusedOnEvent(eventId: eventID, numContextEvents: numberOfEvents, internalIdPrefix: UUID().uuidString) - return .success(TimelineProxy(timeline: timeline, kind: .detached)) + let sdkTimeline = try await room.timelineWithConfiguration(configuration: .init(focus: .event(eventId: eventID, numContextEvents: numberOfEvents), + allowedMessageTypes: .all, + internalIdPrefix: UUID().uuidString, + dateDividerMode: .daily)) + + return .success(TimelineProxy(timeline: sdkTimeline, kind: .detached)) } catch let error as FocusEventError { switch error { case .InvalidEventId(_, let error): @@ -177,10 +184,12 @@ class JoinedRoomProxy: JoinedRoomProxyProtocol { func messageFilteredTimeline(allowedMessageTypes: [RoomMessageEventMessageType]) async -> Result { do { - let timeline = try await TimelineProxy(timeline: room.messageFilteredTimeline(internalIdPrefix: nil, - allowedMessageTypes: allowedMessageTypes, - dateDividerMode: .monthly), - kind: .media(.mediaFilesScreen)) + let sdkTimeline = try await room.timelineWithConfiguration(configuration: .init(focus: .live, + allowedMessageTypes: .only(types: allowedMessageTypes), + internalIdPrefix: nil, + dateDividerMode: .monthly)) + + let timeline = TimelineProxy(timeline: sdkTimeline, kind: .media(.mediaFilesScreen)) await timeline.subscribeForUpdates() return .success(timeline) diff --git a/project.yml b/project.yml index cc7707e9f4..3dacc2bf61 100644 --- a/project.yml +++ b/project.yml @@ -61,7 +61,7 @@ packages: # Element/Matrix dependencies MatrixRustSDK: url: https://github.com/element-hq/matrix-rust-components-swift - exactVersion: 25.01.15 + exactVersion: 25.01.22 # path: ../matrix-rust-sdk Compound: url: https://github.com/element-hq/compound-ios