Skip to content

Commit

Permalink
Fix re-entrancy fix regression (#763)
Browse files Browse the repository at this point in the history
  • Loading branch information
michalrentka authored Sep 11, 2023
1 parent 48e227d commit 8eecbc7
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions Zotero/Controllers/Architecture/ViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -102,14 +102,13 @@ final class ViewModel<Handler: ViewModelActionHandler>: ObservableObject {

let objectWillChange: ObservableObjectPublisher

private(set) var stateObservable: BehaviorRelay<Handler.State>
var state: Handler.State {
return self.stateObservable.value
}
private(set) var stateObservable: PublishSubject<Handler.State>
private(set) var state: Handler.State

init(initialState: Handler.State, handler: Handler) {
self.handler = handler
self.stateObservable = BehaviorRelay(value: initialState)
self.state = initialState
self.stateObservable = PublishSubject()
self.objectWillChange = ObservableObjectPublisher()
self.disposeBag = DisposeBag()
}
Expand Down Expand Up @@ -140,11 +139,12 @@ final class ViewModel<Handler: ViewModelActionHandler>: ObservableObject {
var state = self.state
state.cleanup()
action(&state)
self.state = state

guard notifyListeners else { return }

inMainThread {
self.stateObservable.accept(state)
self.stateObservable.on(.next(state))
self.objectWillChange.send()
}
}
Expand Down

0 comments on commit 8eecbc7

Please sign in to comment.