Skip to content

Commit

Permalink
Merge pull request #2 from lynns/master
Browse files Browse the repository at this point in the history
Use the selector when publishing state updates.
  • Loading branch information
jarsen authored Sep 1, 2016
2 parents 237476c + 31a807c commit 01c87f8
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions Sources/Reactor.swift
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,20 @@ public class Reactor<ReactorState: State> {
subscriptions = subscriptions.filter { $0.subscriber != nil }
DispatchQueue.main.async {
for subscription in self.subscriptions {
subscription.subscriber?._update(with: self.state)
self.publishStateChange(subscriber: subscription.subscriber, selector: subscription.selector)
}
}
}
}


private func publishStateChange(subscriber: AnySubscriber?, selector: ((ReactorState) -> Any)?) {
if let selector = selector {
subscriber?._update(with: selector(self.state))
} else {
subscriber?._update(with: self.state)
}
}

public init(state: ReactorState, middlewares: [AnyMiddleware] = []) {
self.state = state
self.middlewares = middlewares.map(Middlewares.init)
Expand All @@ -90,7 +98,7 @@ public class Reactor<ReactorState: State> {
public func add(subscriber: AnySubscriber, selector: ((ReactorState) -> Any)? = nil) {
guard !subscriptions.contains(where: {$0.subscriber === subscriber}) else { return }
subscriptions.append(Subscription(subscriber: subscriber, selector: selector))
subscriber._update(with: state)
publishStateChange(subscriber: subscriber, selector: selector)
}

public func remove(subscriber: AnySubscriber) {
Expand Down

0 comments on commit 01c87f8

Please sign in to comment.