You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.0 KiB
73 lines
2.0 KiB
//
|
|
// ManageAgreementPresenter.swift
|
|
// GME Remit
|
|
//
|
|
// Created by InKwon James Kim on 2019/12/23.
|
|
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
|
|
import RxSwift
|
|
import RxCocoa
|
|
|
|
class ManageAgreementPresenter: ViewModelType {
|
|
var interactor: ManageAgreementInteractorInput?
|
|
var wireframe: ManageAgreementWireframeInput?
|
|
|
|
struct Input {
|
|
let viewWillAppear: Observable<Void>
|
|
let agreement: Observable<Bool>
|
|
let submit: Observable<Void>
|
|
}
|
|
|
|
struct Output {
|
|
let isError: Driver<Error>
|
|
let isProgress: Driver<Bool>
|
|
let documents: Observable<[AgreePDFDocument]>
|
|
}
|
|
|
|
private let disposeBag = DisposeBag()
|
|
|
|
private let progressLinker = PublishSubject<Bool>()
|
|
private let errorLinker = PublishSubject<Error>()
|
|
private let documents = PublishSubject<[AgreePDFDocument]>()
|
|
|
|
func transform(input: Input) -> Output {
|
|
input.viewWillAppear.subscribe(
|
|
onNext: {[weak self] in
|
|
self?.progressLinker.onNext(true)
|
|
self?.interactor?.fetchDocuments()
|
|
},
|
|
onError: {[weak self] in self?.errorLinker.onNext($0)}
|
|
).disposed(by: disposeBag)
|
|
|
|
input.submit.withLatestFrom(input.agreement) {$1}
|
|
.asObservable().subscribe(onNext: {[weak self] in
|
|
self?.progressLinker.onNext(true)
|
|
self?.interactor?.agreement($0)
|
|
}).disposed(by: disposeBag)
|
|
|
|
return Output(
|
|
isError: errorLinker.asDriverOnErrorJustComplete(),
|
|
isProgress: progressLinker.asDriverOnErrorJustComplete(),
|
|
documents: documents.asObservable()
|
|
)
|
|
}
|
|
}
|
|
|
|
// MARK: ManageAgreement interactor output interface
|
|
extension ManageAgreementPresenter: ManageAgreementInteractorOutput {
|
|
func setDocuments(with documents: [AgreePDFDocument]) {
|
|
progressLinker.onNext(false)
|
|
self.documents.onNext(documents)
|
|
}
|
|
|
|
func resultAgreement() {
|
|
progressLinker.onNext(false)
|
|
wireframe?.goNewRegistration()
|
|
}
|
|
|
|
func setError(with error: Error) {
|
|
progressLinker.onNext(false)
|
|
errorLinker.onNext(error)
|
|
}
|
|
}
|