From a795e42961cb08eda66aa9f5d64a042481f0f27b Mon Sep 17 00:00:00 2001 From: Mauro <34335419+Velin92@users.noreply.github.com> Date: Tue, 30 Jan 2024 16:48:34 +0100 Subject: [PATCH] State events filtering + Bump sdk (#2404) --- ElementX.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/swiftpm/Package.resolved | 4 +-- .../Sources/Services/Client/ClientProxy.swift | 25 +++++++++++++++++-- changelog.d/2404.change | 1 + project.yml | 2 +- 5 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 changelog.d/2404.change diff --git a/ElementX.xcodeproj/project.pbxproj b/ElementX.xcodeproj/project.pbxproj index ae9594bd1..4072c121c 100644 --- a/ElementX.xcodeproj/project.pbxproj +++ b/ElementX.xcodeproj/project.pbxproj @@ -6732,7 +6732,7 @@ repositoryURL = "https://github.com/matrix-org/matrix-rust-components-swift"; requirement = { kind = exactVersion; - version = 1.1.35; + version = 1.1.36; }; }; 821C67C9A7F8CC3FD41B28B4 /* XCRemoteSwiftPackageReference "emojibase-bindings" */ = { diff --git a/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index cd7e5fdd2..b4a952c4f 100644 --- a/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -130,8 +130,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/matrix-org/matrix-rust-components-swift", "state" : { - "revision" : "b7ed8b30a1b648ebdf87bb14a11f071df4999e03", - "version" : "1.1.35" + "revision" : "e6aecad747a12e399ee718b5fb2ece45b7b6e23a", + "version" : "1.1.36" } }, { diff --git a/ElementX/Sources/Services/Client/ClientProxy.swift b/ElementX/Sources/Services/Client/ClientProxy.swift index 73a670bda..b9e9fcef4 100644 --- a/ElementX/Sources/Services/Client/ClientProxy.swift +++ b/ElementX/Sources/Services/Client/ClientProxy.swift @@ -586,14 +586,35 @@ class ClientProxy: ClientProxyProtocol { }) } + private let eventFilters: TimelineEventTypeFilter = { + let stateEventFilters: [FilterStateEventType] = [.roomAliases, + .roomCanonicalAlias, + .roomGuestAccess, + .roomHistoryVisibility, + .roomJoinRules, + .roomPinnedEvents, + .roomPowerLevels, + .roomServerAcl, + .roomTombstone, + .spaceChild, + .spaceParent, + .policyRuleRoom, + .policyRuleServer] + + return .exclude(eventTypes: stateEventFilters.map { FilterTimelineEventType.state(eventType: $0) }) + }() + private func roomTupleForIdentifier(_ identifier: String) async -> (RoomListItem?, Room?) { do { let roomListItem = try roomListService?.room(roomId: identifier) - let fullRoom = await roomListItem?.fullRoom() + if roomListItem?.isTimelineInitialized() == false { + try await roomListItem?.initTimeline(eventTypeFilter: eventFilters) + } + let fullRoom = try await roomListItem?.fullRoom() return (roomListItem, fullRoom) } catch { - MXLog.error("Failed retrieving room with identifier: \(identifier)") + MXLog.error("Failed retrieving/initialising room with identifier: \(identifier)") return (nil, nil) } } diff --git a/changelog.d/2404.change b/changelog.d/2404.change new file mode 100644 index 000000000..ee927e46e --- /dev/null +++ b/changelog.d/2404.change @@ -0,0 +1 @@ +The timeline will filter some unnecessary state events. \ No newline at end of file diff --git a/project.yml b/project.yml index 4a7a1f4e8..c2889eb6b 100644 --- a/project.yml +++ b/project.yml @@ -47,7 +47,7 @@ packages: # Element/Matrix dependencies MatrixRustSDK: url: https://github.com/matrix-org/matrix-rust-components-swift - exactVersion: 1.1.35 + exactVersion: 1.1.36 # path: ../matrix-rust-sdk Compound: url: https://github.com/element-hq/compound-ios