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
@@ -39,7 +39,7 @@ struct RoomScreenViewState: BindableState {
var isBackPaginating = false
var bindings: RoomScreenViewStateBindings
var contextMenuBuilder: ((_ itemId: String) -> TimelineItemContextMenu)?
var contextMenuBuilder: (@MainActor (_ itemId: String) -> TimelineItemContextMenu)?
var sendButtonDisabled: Bool {
bindings.composerText.count == 0
@@ -67,15 +67,11 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
Task {
switch viewAction {
case .loadPreviousPage:
await MainActor.run {
state.isBackPaginating = true
}
state.isBackPaginating = true
switch await timelineController.paginateBackwards(Constants.backPaginationPageSize) {
default:
await MainActor.run {
state.isBackPaginating = false
}
state.isBackPaginating = false
}
case .itemAppeared(let id):
@@ -90,10 +86,7 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
}
await timelineController.sendMessage(state.bindings.composerText)
await MainActor.run {
state.bindings.composerText = ""
}
state.bindings.composerText = ""
}
}
}
@@ -16,6 +16,7 @@
import Foundation
@MainActor
protocol RoomScreenViewModelProtocol {
var context: RoomScreenViewModelType.Context { get }
}