From 155d153b36af12f2223db6162aabd48eb3c6201e Mon Sep 17 00:00:00 2001 From: Mauro Romito Date: Wed, 6 May 2026 12:05:44 +0200 Subject: [PATCH] use `isDm` from the SDK to determine if a room is a direct one to one room. --- ElementX/Sources/Mocks/Generated/GeneratedMocks.swift | 5 +++++ ElementX/Sources/Mocks/JoinedRoomProxyMock.swift | 1 + ElementX/Sources/Other/Extensions/ClientBuilder.swift | 1 + ElementX/Sources/Services/Room/RoomInfoProxy.swift | 4 ++++ ElementX/Sources/Services/Room/RoomInfoProxyProtocol.swift | 1 + ElementX/Sources/Services/Room/RoomProxyProtocol.swift | 2 +- 6 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ElementX/Sources/Mocks/Generated/GeneratedMocks.swift b/ElementX/Sources/Mocks/Generated/GeneratedMocks.swift index ee3128987..c15350f19 100644 --- a/ElementX/Sources/Mocks/Generated/GeneratedMocks.swift +++ b/ElementX/Sources/Mocks/Generated/GeneratedMocks.swift @@ -15294,6 +15294,11 @@ class RoomInfoProxyMock: RoomInfoProxyProtocol, @unchecked Sendable { set(value) { underlyingIsFavourite = value } } var underlyingIsFavourite: Bool! + var isDM: Bool { + get { return underlyingIsDM } + set(value) { underlyingIsDM = value } + } + var underlyingIsDM: Bool! var canonicalAlias: String? var alternativeAliases: [String] = [] var membership: Membership { diff --git a/ElementX/Sources/Mocks/JoinedRoomProxyMock.swift b/ElementX/Sources/Mocks/JoinedRoomProxyMock.swift index 30302bbdc..fe6c33a85 100644 --- a/ElementX/Sources/Mocks/JoinedRoomProxyMock.swift +++ b/ElementX/Sources/Mocks/JoinedRoomProxyMock.swift @@ -182,6 +182,7 @@ extension RoomInfoProxyMock { activeMembersCount = configuration.members.filter { $0.membership == .join || $0.membership == .invite }.count invitedMembersCount = configuration.members.filter { $0.membership == .invite }.count joinedMembersCount = configuration.members.filter { $0.membership == .join }.count + isDM = configuration.isDirect && activeMembersCount <= 2 highlightCount = 0 notificationCount = 0 cachedUserDefinedNotificationMode = .allMessages diff --git a/ElementX/Sources/Other/Extensions/ClientBuilder.swift b/ElementX/Sources/Other/Extensions/ClientBuilder.swift index f22837b29..fc6fa9aaa 100644 --- a/ElementX/Sources/Other/Extensions/ClientBuilder.swift +++ b/ElementX/Sources/Other/Extensions/ClientBuilder.swift @@ -29,6 +29,7 @@ extension ClientBuilder { timeout: requestTimeout, maxConcurrentRequests: nil, maxRetryTime: maxRequestRetryTime)) + .dmRoomDefinition(dmRoomDefinition: .twoMembers) builder = switch slidingSync { case .restored: builder diff --git a/ElementX/Sources/Services/Room/RoomInfoProxy.swift b/ElementX/Sources/Services/Room/RoomInfoProxy.swift index f6ab6d825..2c1c910f6 100644 --- a/ElementX/Sources/Services/Room/RoomInfoProxy.swift +++ b/ElementX/Sources/Services/Room/RoomInfoProxy.swift @@ -54,6 +54,10 @@ struct RoomInfoProxy: RoomInfoProxyProtocol { roomInfo.isSpace } + var isDM: Bool { + roomInfo.isDm + } + var successor: SuccessorRoom? { roomInfo.successorRoom } diff --git a/ElementX/Sources/Services/Room/RoomInfoProxyProtocol.swift b/ElementX/Sources/Services/Room/RoomInfoProxyProtocol.swift index a329ba197..73767319b 100644 --- a/ElementX/Sources/Services/Room/RoomInfoProxyProtocol.swift +++ b/ElementX/Sources/Services/Room/RoomInfoProxyProtocol.swift @@ -38,6 +38,7 @@ protocol RoomInfoProxyProtocol: BaseRoomInfoProxyProtocol { var isDirect: Bool { get } var isSpace: Bool { get } var isFavourite: Bool { get } + var isDM: Bool { get } var canonicalAlias: String? { get } var alternativeAliases: [String] { get } diff --git a/ElementX/Sources/Services/Room/RoomProxyProtocol.swift b/ElementX/Sources/Services/Room/RoomProxyProtocol.swift index 6d67a1f5f..1f4cdf871 100644 --- a/ElementX/Sources/Services/Room/RoomProxyProtocol.swift +++ b/ElementX/Sources/Services/Room/RoomProxyProtocol.swift @@ -224,7 +224,7 @@ extension JoinedRoomProxyProtocol { } var isDirectOneToOneRoom: Bool { - infoPublisher.value.isDirect && infoPublisher.value.activeMembersCount <= 2 + infoPublisher.value.isDM } func members() async -> [RoomMemberProxyProtocol]? {