Cache room display names

This commit is contained in:
Stefan Ceriu
2022-05-16 13:28:35 +03:00
parent e9f07a98b9
commit 084e1fad36
4 changed files with 12 additions and 3 deletions
+1 -1
View File
@@ -134,7 +134,7 @@ class AppCoordinator: AuthenticationCoordinatorDelegate, Coordinator {
memberDetailProvider: memberDetailProvider) memberDetailProvider: memberDetailProvider)
let parameters = RoomScreenCoordinatorParameters(timelineController: timelineController, let parameters = RoomScreenCoordinatorParameters(timelineController: timelineController,
roomName: roomProxy.name) roomName: roomProxy.displayName ?? roomProxy.name)
let coordinator = RoomScreenCoordinator(parameters: parameters) let coordinator = RoomScreenCoordinator(parameters: parameters)
self.add(childCoordinator: coordinator) self.add(childCoordinator: coordinator)
@@ -12,7 +12,7 @@ import Combine
struct MockRoomProxy: RoomProxyProtocol { struct MockRoomProxy: RoomProxyProtocol {
let id = UUID().uuidString let id = UUID().uuidString
let name: String? = nil let name: String? = nil
let displayName: String let displayName: String?
let topic: String? = nil let topic: String? = nil
let messages: [RoomMessageProtocol] = [] let messages: [RoomMessageProtocol] = []
@@ -28,7 +28,7 @@ struct MockRoomProxy: RoomProxyProtocol {
var callbacks = PassthroughSubject<RoomProxyCallback, Never>() var callbacks = PassthroughSubject<RoomProxyCallback, Never>()
func displayName(_ completion: @escaping (Result<String, RoomProxyError>) -> Void) { func displayName(_ completion: @escaping (Result<String, RoomProxyError>) -> Void) {
completion(.success(displayName)) completion(.success("Room display name"))
} }
func startLiveEventListener() { func startLiveEventListener() {
@@ -36,6 +36,8 @@ class RoomProxy: RoomProxyProtocol {
private var backwardStream: BackwardsStreamProtocol? private var backwardStream: BackwardsStreamProtocol?
private(set) var displayName: String?
let callbacks = PassthroughSubject<RoomProxyCallback, Never>() let callbacks = PassthroughSubject<RoomProxyCallback, Never>()
private(set) var messages: [RoomMessageProtocol] private(set) var messages: [RoomMessageProtocol]
@@ -126,9 +128,15 @@ class RoomProxy: RoomProxyProtocol {
} }
func displayName(_ completion: @escaping (Result<String, RoomProxyError>) -> Void) { func displayName(_ completion: @escaping (Result<String, RoomProxyError>) -> Void) {
if let displayName = displayName {
completion(.success(displayName))
return
}
generalProcessingQueue.async { generalProcessingQueue.async {
do { do {
let displayName = try self.room.displayName() let displayName = try self.room.displayName()
self.displayName = displayName
DispatchQueue.main.async { DispatchQueue.main.async {
completion(.success(displayName)) completion(.success(displayName))
@@ -30,6 +30,7 @@ protocol RoomProxyProtocol {
var isTombstoned: Bool { get } var isTombstoned: Bool { get }
var name: String? { get } var name: String? { get }
var displayName: String? { get }
var topic: String? { get } var topic: String? { get }
var messages: [RoomMessageProtocol] { get } var messages: [RoomMessageProtocol] { get }