Stub.swift 845 B

123456789101112131415161718192021222324252627282930
  1. import RxSwift
  2. public class Stub<Reactor: ReactorKit.Reactor> {
  3. private unowned var reactor: Reactor
  4. private let disposeBag: DisposeBag
  5. public var isEnabled: Bool = false
  6. public let state: StateRelay<Reactor.State>
  7. public let action: ActionSubject<Reactor.Action>
  8. public private(set) var actions: [Reactor.Action] = []
  9. public init(reactor: Reactor, disposeBag: DisposeBag) {
  10. self.reactor = reactor
  11. self.disposeBag = disposeBag
  12. self.state = .init(value: reactor.initialState)
  13. self.state.asObservable()
  14. .subscribe(onNext: { [weak reactor] state in
  15. reactor?.currentState = state
  16. })
  17. .disposed(by: disposeBag)
  18. self.action = .init()
  19. self.action
  20. .subscribe(onNext: { [weak self] action in
  21. self?.actions.append(action)
  22. })
  23. .disposed(by: self.disposeBag)
  24. }
  25. }