// // DetailNotificationPresenter.swift // GME Remit // // Created by InKwon James Kim on 2020/02/11. //Copyright © 2020 Gobal Money Express Co. Ltd. All rights reserved. // import RxSwift import RxCocoa class DetailNotificationPresenter: ViewModelType { var interactor: DetailNotificationInteractorInput? var wireframe: DetailNotificationWireframeInput? struct Input { let viewWillAppear: Driver } struct Output { let isError: Driver let isProgress: Driver let model: Driver } private let disposeBag = DisposeBag() private let progressLinker = PublishSubject() private let errorLinker = PublishSubject() private let model = PublishSubject() private var index = "" init(index: String) { self.index = index } func transform(input: Input) -> Output { input.viewWillAppear.drive(onNext: {[weak self] in guard let `self` = self else { return } self.progressLinker.onNext(true) self.interactor?.fetchDetail(self.index) }).disposed(by: disposeBag) return Output( isError: errorLinker.asDriverOnErrorJustComplete(), isProgress: progressLinker.asDriverOnErrorJustComplete(), model: model.asDriverOnErrorJustComplete() ) } } // MARK: DetailNotification interactor output interface extension DetailNotificationPresenter: DetailNotificationInteractorOutput { func setModel(with model: DetailNoticeModel) { progressLinker.onNext(false) self.model.onNext(model) } func setError(with error: Error) { progressLinker.onNext(false) errorLinker.onNext(error) } }