From d545a2b904acd7a5c29cd80319e81b62a2db14e7 Mon Sep 17 00:00:00 2001 From: Doug <6060466+pixlwave@users.noreply.github.com> Date: Tue, 2 Dec 2025 15:49:23 +0000 Subject: [PATCH] Fix missing read receipts in the timeline and edits in the room list. (#4807) * Update the enterprise submodule. * Update the SDK. --- ElementX.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/swiftpm/Package.resolved | 4 +- .../Mocks/Generated/SDKGeneratedMocks.swift | 135 ++++++++++++++++-- .../Services/Room/JoinedRoomProxy.swift | 10 +- Enterprise | 2 +- project.yml | 2 +- 6 files changed, 130 insertions(+), 25 deletions(-) diff --git a/ElementX.xcodeproj/project.pbxproj b/ElementX.xcodeproj/project.pbxproj index 1e1bf8c09..708b0d5fa 100644 --- a/ElementX.xcodeproj/project.pbxproj +++ b/ElementX.xcodeproj/project.pbxproj @@ -9498,7 +9498,7 @@ repositoryURL = "https://github.com/element-hq/matrix-rust-components-swift"; requirement = { kind = exactVersion; - version = 25.11.27; + version = 25.12.02; }; }; 701C7BEF8F70F7A83E852DCC /* XCRemoteSwiftPackageReference "GZIP" */ = { diff --git a/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index b48475076..6f41c9233 100644 --- a/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -158,8 +158,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/element-hq/matrix-rust-components-swift", "state" : { - "revision" : "1490877fdef3a870f5008eda68486edbd280d16c", - "version" : "25.11.27" + "revision" : "059bf9db4cfcace1cee9d1d8d4ff21a8a1297557", + "version" : "25.12.2" } }, { diff --git a/ElementX/Sources/Mocks/Generated/SDKGeneratedMocks.swift b/ElementX/Sources/Mocks/Generated/SDKGeneratedMocks.swift index 6f1d2266c..1316314da 100644 --- a/ElementX/Sources/Mocks/Generated/SDKGeneratedMocks.swift +++ b/ElementX/Sources/Mocks/Generated/SDKGeneratedMocks.swift @@ -3732,18 +3732,18 @@ open class ClientSDKMock: MatrixRustSDK.Client, @unchecked Sendable { try await removeAvatarClosure?() } - //MARK: - resetServerInfo + //MARK: - resetSupportedVersions - open var resetServerInfoThrowableError: Error? - var resetServerInfoUnderlyingCallsCount = 0 - open var resetServerInfoCallsCount: Int { + open var resetSupportedVersionsThrowableError: Error? + var resetSupportedVersionsUnderlyingCallsCount = 0 + open var resetSupportedVersionsCallsCount: Int { get { if Thread.isMainThread { - return resetServerInfoUnderlyingCallsCount + return resetSupportedVersionsUnderlyingCallsCount } else { var returnValue: Int? = nil DispatchQueue.main.sync { - returnValue = resetServerInfoUnderlyingCallsCount + returnValue = resetSupportedVersionsUnderlyingCallsCount } return returnValue! @@ -3751,25 +3751,65 @@ open class ClientSDKMock: MatrixRustSDK.Client, @unchecked Sendable { } set { if Thread.isMainThread { - resetServerInfoUnderlyingCallsCount = newValue + resetSupportedVersionsUnderlyingCallsCount = newValue } else { DispatchQueue.main.sync { - resetServerInfoUnderlyingCallsCount = newValue + resetSupportedVersionsUnderlyingCallsCount = newValue } } } } - open var resetServerInfoCalled: Bool { - return resetServerInfoCallsCount > 0 + open var resetSupportedVersionsCalled: Bool { + return resetSupportedVersionsCallsCount > 0 } - open var resetServerInfoClosure: (() async throws -> Void)? + open var resetSupportedVersionsClosure: (() async throws -> Void)? - open override func resetServerInfo() async throws { - if let error = resetServerInfoThrowableError { + open override func resetSupportedVersions() async throws { + if let error = resetSupportedVersionsThrowableError { throw error } - resetServerInfoCallsCount += 1 - try await resetServerInfoClosure?() + resetSupportedVersionsCallsCount += 1 + try await resetSupportedVersionsClosure?() + } + + //MARK: - resetWellKnown + + open var resetWellKnownThrowableError: Error? + var resetWellKnownUnderlyingCallsCount = 0 + open var resetWellKnownCallsCount: Int { + get { + if Thread.isMainThread { + return resetWellKnownUnderlyingCallsCount + } else { + var returnValue: Int? = nil + DispatchQueue.main.sync { + returnValue = resetWellKnownUnderlyingCallsCount + } + + return returnValue! + } + } + set { + if Thread.isMainThread { + resetWellKnownUnderlyingCallsCount = newValue + } else { + DispatchQueue.main.sync { + resetWellKnownUnderlyingCallsCount = newValue + } + } + } + } + open var resetWellKnownCalled: Bool { + return resetWellKnownCallsCount > 0 + } + open var resetWellKnownClosure: (() async throws -> Void)? + + open override func resetWellKnown() async throws { + if let error = resetWellKnownThrowableError { + throw error + } + resetWellKnownCallsCount += 1 + try await resetWellKnownClosure?() } //MARK: - resolveRoomAlias @@ -22982,6 +23022,71 @@ open class SpaceServiceSDKMock: MatrixRustSDK.SpaceService, @unchecked Sendable try await addChildToSpaceChildIdSpaceIdClosure?(childId, spaceId) } + //MARK: - editableSpaces + + var editableSpacesUnderlyingCallsCount = 0 + open var editableSpacesCallsCount: Int { + get { + if Thread.isMainThread { + return editableSpacesUnderlyingCallsCount + } else { + var returnValue: Int? = nil + DispatchQueue.main.sync { + returnValue = editableSpacesUnderlyingCallsCount + } + + return returnValue! + } + } + set { + if Thread.isMainThread { + editableSpacesUnderlyingCallsCount = newValue + } else { + DispatchQueue.main.sync { + editableSpacesUnderlyingCallsCount = newValue + } + } + } + } + open var editableSpacesCalled: Bool { + return editableSpacesCallsCount > 0 + } + + var editableSpacesUnderlyingReturnValue: [SpaceRoom]! + open var editableSpacesReturnValue: [SpaceRoom]! { + get { + if Thread.isMainThread { + return editableSpacesUnderlyingReturnValue + } else { + var returnValue: [SpaceRoom]? = nil + DispatchQueue.main.sync { + returnValue = editableSpacesUnderlyingReturnValue + } + + return returnValue! + } + } + set { + if Thread.isMainThread { + editableSpacesUnderlyingReturnValue = newValue + } else { + DispatchQueue.main.sync { + editableSpacesUnderlyingReturnValue = newValue + } + } + } + } + open var editableSpacesClosure: (() async -> [SpaceRoom])? + + open override func editableSpaces() async -> [SpaceRoom] { + editableSpacesCallsCount += 1 + if let editableSpacesClosure = editableSpacesClosure { + return await editableSpacesClosure() + } else { + return editableSpacesReturnValue + } + } + //MARK: - joinedParentsOfChild open var joinedParentsOfChildChildIdThrowableError: Error? diff --git a/ElementX/Sources/Services/Room/JoinedRoomProxy.swift b/ElementX/Sources/Services/Room/JoinedRoomProxy.swift index e67e1fbdf..5f28d76fd 100644 --- a/ElementX/Sources/Services/Room/JoinedRoomProxy.swift +++ b/ElementX/Sources/Services/Room/JoinedRoomProxy.swift @@ -85,7 +85,7 @@ class JoinedRoomProxy: JoinedRoomProxyProtocol { filter: .eventTypeFilter(filter: excludedEventsFilter), internalIdPrefix: nil, dateDividerMode: .daily, - trackReadReceipts: true, + trackReadReceipts: .messageLikeEvents, reportUtds: true)), kind: .live) @@ -150,7 +150,7 @@ class JoinedRoomProxy: JoinedRoomProxyProtocol { filter: .all, internalIdPrefix: UUID().uuidString, dateDividerMode: .daily, - trackReadReceipts: false, + trackReadReceipts: .disabled, reportUtds: true)) return .success(TimelineProxy(timeline: sdkTimeline, kind: .detached)) @@ -178,7 +178,7 @@ class JoinedRoomProxy: JoinedRoomProxyProtocol { filter: .all, internalIdPrefix: UUID().uuidString, dateDividerMode: .daily, - trackReadReceipts: true, + trackReadReceipts: .messageLikeEvents, reportUtds: true)) let timeline = TimelineProxy(timeline: sdkTimeline, kind: .thread(rootEventID: eventID)) @@ -225,7 +225,7 @@ class JoinedRoomProxy: JoinedRoomProxyProtocol { filter: .onlyMessage(types: rustMessageTypes), internalIdPrefix: nil, dateDividerMode: .monthly, - trackReadReceipts: false, + trackReadReceipts: .disabled, reportUtds: true)) let timeline = TimelineProxy(timeline: sdkTimeline, kind: .media(presentation)) @@ -256,7 +256,7 @@ class JoinedRoomProxy: JoinedRoomProxyProtocol { filter: .all, internalIdPrefix: nil, dateDividerMode: .daily, - trackReadReceipts: false, + trackReadReceipts: .disabled, reportUtds: true)) let timeline = TimelineProxy(timeline: sdkTimeline, kind: .pinned) diff --git a/Enterprise b/Enterprise index daeb07de7..e2c37065c 160000 --- a/Enterprise +++ b/Enterprise @@ -1 +1 @@ -Subproject commit daeb07de7b1cab2335c1870f61dfade039aa3f90 +Subproject commit e2c37065c61558b89129f90d71bd772bc30d3b22 diff --git a/project.yml b/project.yml index 78e9ce864..db2b76d14 100644 --- a/project.yml +++ b/project.yml @@ -71,7 +71,7 @@ packages: # Element/Matrix dependencies MatrixRustSDK: url: https://github.com/element-hq/matrix-rust-components-swift - exactVersion: 25.11.27 + exactVersion: 25.12.02 # path: ../matrix-rust-sdk Compound: path: compound-ios