From ee162aa8a66709c7590e23f19fe60b37d6f67727 Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Mon, 16 May 2022 13:28:35 +0300 Subject: [PATCH] Cache room display names --- ElementX/Sources/AppCoordinator.swift | 2 +- ElementX/Sources/Services/Room/MockRoomProxy.swift | 4 ++-- ElementX/Sources/Services/Room/RoomProxy.swift | 8 ++++++++ ElementX/Sources/Services/Room/RoomProxyProtocol.swift | 1 + 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ElementX/Sources/AppCoordinator.swift b/ElementX/Sources/AppCoordinator.swift index 3bcadd060..7fc0ee640 100644 --- a/ElementX/Sources/AppCoordinator.swift +++ b/ElementX/Sources/AppCoordinator.swift @@ -134,7 +134,7 @@ class AppCoordinator: AuthenticationCoordinatorDelegate, Coordinator { memberDetailProvider: memberDetailProvider) let parameters = RoomScreenCoordinatorParameters(timelineController: timelineController, - roomName: roomProxy.name) + roomName: roomProxy.displayName ?? roomProxy.name) let coordinator = RoomScreenCoordinator(parameters: parameters) self.add(childCoordinator: coordinator) diff --git a/ElementX/Sources/Services/Room/MockRoomProxy.swift b/ElementX/Sources/Services/Room/MockRoomProxy.swift index 71569af68..5ca494c87 100644 --- a/ElementX/Sources/Services/Room/MockRoomProxy.swift +++ b/ElementX/Sources/Services/Room/MockRoomProxy.swift @@ -12,7 +12,7 @@ import Combine struct MockRoomProxy: RoomProxyProtocol { let id = UUID().uuidString let name: String? = nil - let displayName: String + let displayName: String? let topic: String? = nil let messages: [RoomMessageProtocol] = [] @@ -28,7 +28,7 @@ struct MockRoomProxy: RoomProxyProtocol { var callbacks = PassthroughSubject() func displayName(_ completion: @escaping (Result) -> Void) { - completion(.success(displayName)) + completion(.success("Room display name")) } func startLiveEventListener() { diff --git a/ElementX/Sources/Services/Room/RoomProxy.swift b/ElementX/Sources/Services/Room/RoomProxy.swift index ecdb369d3..6c9cfab37 100644 --- a/ElementX/Sources/Services/Room/RoomProxy.swift +++ b/ElementX/Sources/Services/Room/RoomProxy.swift @@ -36,6 +36,8 @@ class RoomProxy: RoomProxyProtocol { private var backwardStream: BackwardsStreamProtocol? + private(set) var displayName: String? + let callbacks = PassthroughSubject() private(set) var messages: [RoomMessageProtocol] @@ -126,9 +128,15 @@ class RoomProxy: RoomProxyProtocol { } func displayName(_ completion: @escaping (Result) -> Void) { + if let displayName = displayName { + completion(.success(displayName)) + return + } + generalProcessingQueue.async { do { let displayName = try self.room.displayName() + self.displayName = displayName DispatchQueue.main.async { completion(.success(displayName)) diff --git a/ElementX/Sources/Services/Room/RoomProxyProtocol.swift b/ElementX/Sources/Services/Room/RoomProxyProtocol.swift index eebf00828..8727cff37 100644 --- a/ElementX/Sources/Services/Room/RoomProxyProtocol.swift +++ b/ElementX/Sources/Services/Room/RoomProxyProtocol.swift @@ -30,6 +30,7 @@ protocol RoomProxyProtocol { var isTombstoned: Bool { get } var name: String? { get } + var displayName: String? { get } var topic: String? { get } var messages: [RoomMessageProtocol] { get }