vector-im/element-x-ios/issues/53 - Various tweaks following code review

This commit is contained in:
Stefan Ceriu
2022-05-25 16:51:48 +03:00
committed by Stefan Ceriu
parent 73f507045b
commit 8fec97217f
23 changed files with 172 additions and 126 deletions
@@ -9,7 +9,7 @@
import Foundation
import MatrixRustSDK
struct RoomMessageFactory {
struct RoomMessageFactory: RoomMessageFactoryProtocol {
func buildRoomMessageFrom(_ message: AnyMessage) -> RoomMessageProtocol {
if let textMessage = message.textMessage() {
return TextRoomMessage(message: textMessage)
@@ -0,0 +1,14 @@
//
// RoomMessageFactoryProtocol.swift
// ElementX
//
// Created by Stefan Ceriu on 26/05/2022.
// Copyright © 2022 element.io. All rights reserved.
//
import Foundation
import MatrixRustSDK
protocol RoomMessageFactoryProtocol {
func buildRoomMessageFrom(_ message: AnyMessage) -> RoomMessageProtocol
}
+15 -10
View File
@@ -27,7 +27,7 @@ private class WeakRoomProxyWrapper: RoomDelegate {
class RoomProxy: RoomProxyProtocol {
private let room: Room
private let messageFactory: RoomMessageFactory
private let roomMessageFactory: RoomMessageFactoryProtocol
private var backwardStream: BackwardsStreamProtocol?
@@ -37,9 +37,9 @@ class RoomProxy: RoomProxyProtocol {
private(set) var messages: [RoomMessageProtocol]
init(room: Room, messageFactory: RoomMessageFactory) {
init(room: Room, roomMessageFactory: RoomMessageFactoryProtocol) {
self.room = room
self.messageFactory = messageFactory
self.roomMessageFactory = roomMessageFactory
messages = []
room.setDelegate(delegate: WeakRoomProxyWrapper(roomProxy: self))
@@ -91,7 +91,8 @@ class RoomProxy: RoomProxyProtocol {
} catch {
return .failure(.failedRetrievingMemberAvatarURL)
}
}.value
}
.value
}
func loadDisplayNameForUserId(_ userId: String) async -> Result<String?, RoomProxyError> {
@@ -102,7 +103,8 @@ class RoomProxy: RoomProxyProtocol {
} catch {
return .failure(.failedRetrievingMemberDisplayName)
}
}.value
}
.value
}
func loadDisplayName() async -> Result<String, RoomProxyError> {
@@ -119,7 +121,8 @@ class RoomProxy: RoomProxyProtocol {
} catch {
return .failure(.failedRetrievingDisplayName)
}
}.value
}
.value
}
func paginateBackwards(count: UInt) async -> Result<Void, RoomProxyError> {
@@ -133,13 +136,14 @@ class RoomProxy: RoomProxyProtocol {
Benchmark.endTrackingForIdentifier("BackPagination \(self.id)", message: "Finished backpaginating \(count) message(s) in room \(self.id)")
let messages = sdkMessages.map { message in
self.messageFactory.buildRoomMessageFrom(message)
self.roomMessageFactory.buildRoomMessageFrom(message)
}.reversed()
self.messages.insert(contentsOf: messages, at: 0)
return .success(())
}.value
}
.value
}
func sendMessage(_ message: String) async -> Result<Void, RoomProxyError> {
@@ -153,13 +157,14 @@ class RoomProxy: RoomProxyProtocol {
} catch {
return .failure(.failedSendingMessage)
}
}.value
}
.value
}
// MARK: - Private
fileprivate func appendMessage(_ message: AnyMessage) {
let message = self.messageFactory.buildRoomMessageFrom(message)
let message = roomMessageFactory.buildRoomMessageFrom(message)
messages.append(message)
callbacks.send(.updatedMessages)
}
@@ -16,7 +16,7 @@ struct EventBriefFactory: EventBriefFactoryProtocol {
self.memberDetailProvider = memberDetailProvider
}
func eventBriefForMessage(_ message: RoomMessageProtocol?) async -> EventBrief? {
func buildEventBriefFor(message: RoomMessageProtocol?) async -> EventBrief? {
guard let message = message else {
return nil
}
@@ -37,7 +37,7 @@ struct EventBriefFactory: EventBriefFactoryProtocol {
// MARK: - Private
private func buildEventBrief(message: RoomMessageProtocol, htmlBody: String?) async -> EventBrief? {
private func buildEventBrief(message: RoomMessageProtocol, htmlBody: String?) async -> EventBrief? {
switch await memberDetailProvider.loadDisplayNameForUserId(message.sender) {
case .success(let displayName):
return EventBrief(eventId: message.id,
@@ -10,5 +10,5 @@ import Foundation
@MainActor
protocol EventBriefFactoryProtocol {
func eventBriefForMessage(_ message: RoomMessageProtocol?) async -> EventBrief?
func buildEventBriefFor(message: RoomMessageProtocol?) async -> EventBrief?
}
@@ -30,7 +30,7 @@ struct MockRoomSummary: RoomSummaryProtocol {
var avatar: UIImage?
func loadDetails() {
func loadDetails() async {
}
@@ -48,19 +48,19 @@ class RoomSummary: RoomSummaryProtocol {
private(set) var displayName: String? {
didSet {
self.callbacks.send(.updatedData)
callbacks.send(.updatedData)
}
}
private(set) var lastMessage: EventBrief? {
didSet {
self.callbacks.send(.updatedData)
callbacks.send(.updatedData)
}
}
private(set) var avatar: UIImage? {
didSet {
self.callbacks.send(.updatedData)
callbacks.send(.updatedData)
}
}
@@ -72,7 +72,7 @@ class RoomSummary: RoomSummaryProtocol {
self.eventBriefFactory = eventBriefFactory
Task {
lastMessage = await eventBriefFactory.eventBriefForMessage(roomProxy.messages.last)
lastMessage = await eventBriefFactory.buildEventBriefFor(message: roomProxy.messages.last)
}
roomProxy.callbacks
@@ -85,7 +85,7 @@ class RoomSummary: RoomSummaryProtocol {
switch callback {
case .updatedMessages:
Task {
self.lastMessage = await eventBriefFactory.eventBriefForMessage(roomProxy.messages.last)
self.lastMessage = await eventBriefFactory.buildEventBriefFor(message: roomProxy.messages.last)
}
}
}
@@ -98,13 +98,13 @@ class RoomSummary: RoomSummaryProtocol {
}
await withTaskGroup(of: Void.self) { group in
group.addTask(priority: .medium) {
group.addTask {
await self.loadDisplayName()
}
group.addTask(priority: .medium) {
group.addTask {
await self.loadAvatar()
}
group.addTask(priority: .medium) {
group.addTask {
await self.loadLastMessage()
}
}
@@ -143,7 +143,7 @@ class RoomSummary: RoomSummaryProtocol {
switch await roomProxy.paginateBackwards(count: 1) {
case .success:
lastMessage = await eventBriefFactory.eventBriefForMessage(roomProxy.messages.last)
lastMessage = await eventBriefFactory.buildEventBriefFor(message: roomProxy.messages.last)
case .failure(let error):
MXLog.error("Failed back paginating with error: \(error)")
}