vector-im/element-x-ios/issues/53 - Adopt MainActors, dispatch heavy operations do detached tasks and ensure combine publisher call back on the right queue

This commit is contained in:
Stefan Ceriu
2022-05-25 13:28:19 +03:00
committed by Stefan Ceriu
parent dde7786152
commit f5890b68a2
29 changed files with 100 additions and 90 deletions
@@ -31,7 +31,10 @@ class RoomTimelineController: RoomTimelineControllerProtocol {
self.mediaProvider = mediaProvider
self.memberDetailProvider = memberDetailProvider
self.timelineProvider.callbacks.sink { [weak self] callback in
self.timelineProvider
.callbacks
.receive(on: DispatchQueue.main)
.sink { [weak self] callback in
guard let self = self else { return }
switch callback {
@@ -18,6 +18,7 @@ enum RoomTimelineControllerError: Error {
case generic
}
@MainActor
protocol RoomTimelineControllerProtocol {
var timelineItems: [RoomTimelineItemProtocol] { get }
var callbacks: PassthroughSubject<RoomTimelineControllerCallback, Never> { get }
@@ -18,6 +18,7 @@ enum RoomTimelineProviderError: Error {
case generic
}
@MainActor
protocol RoomTimelineProviderProtocol {
var callbacks: PassthroughSubject<RoomTimelineProviderCallback, Never> { get }
@@ -9,6 +9,7 @@
import Foundation
import UIKit
@MainActor
struct RoomTimelineItemFactory {
private let mediaProvider: MediaProviderProtocol
private let memberDetailProvider: MemberDetailProviderProtocol
@@ -8,6 +8,7 @@
import Foundation
@MainActor
struct RoomTimelineViewFactory {
func buildTimelineViewFor(_ timelineItem: RoomTimelineItemProtocol) -> RoomTimelineViewProvider {
switch timelineItem {