Cache room display names

This commit is contained in:
Stefan Ceriu
2022-05-16 13:28:35 +03:00
parent 4117e36ba9
commit ee162aa8a6
4 changed files with 12 additions and 3 deletions

View File

@@ -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)

View File

@@ -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<RoomProxyCallback, Never>()
func displayName(_ completion: @escaping (Result<String, RoomProxyError>) -> Void) {
completion(.success(displayName))
completion(.success("Room display name"))
}
func startLiveEventListener() {

View File

@@ -36,6 +36,8 @@ class RoomProxy: RoomProxyProtocol {
private var backwardStream: BackwardsStreamProtocol?
private(set) var displayName: String?
let callbacks = PassthroughSubject<RoomProxyCallback, Never>()
private(set) var messages: [RoomMessageProtocol]
@@ -126,9 +128,15 @@ class RoomProxy: RoomProxyProtocol {
}
func displayName(_ completion: @escaping (Result<String, RoomProxyError>) -> 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))

View File

@@ -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 }