Last active
June 12, 2020 13:10
-
-
Save ElonPark/ddbc6a233eaece3d1dc91923ed8d429c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// MARK: - DummyInteractor | |
final class DummyInteractor: | |
PresentableInteractor<DummyPresentable>, | |
DummyInteractable, | |
DummyPresentableListener | |
{ | |
private let dummyUseCase = DummyUseCase() | |
let dummyActionRelay: PublishRelay<Void> = .init() | |
init(presenter: DummyPresentable) { | |
super.init(presenter: presenter) | |
presenter.listener = self | |
} | |
override func didBecomeActive() { | |
super.didBecomeActive() | |
bindDummyActionRelay() | |
} | |
func bindDummyActionRelay() { | |
dummyActionRelay //VC에서 받은 액션을 바인딩합니다. | |
.throttle(3, latest: false, scheduler: MainScheduler.instance) | |
.flatMapLatest { | |
//self 캡쳐됨. | |
self.dummyUseCase.getTutorialCameraExample() //API 호출 | |
.asObservable() | |
.map { Optional($0) } //원래는 다른 로직이 들어가서 옵셔널로 변경됩니다. | |
} | |
.asDriver(onErrorJustReturn: nil) | |
.drive(onNext: { [weak self] metadata in | |
guard let this = self, | |
let metadata = metadata else { | |
return | |
} | |
print(metadata) | |
}) | |
.disposeOnDeactivate(interactor: self)// <- 명시적으로 dispose되서 메모리 누수가 없는 것으로 예상, 내부에서 CompositeDisposable을 dispose 합니다. | |
} | |
} | |
enum Dummy { | |
case dum | |
} | |
final class DummyUseCase { | |
func getTutorialCameraExample() -> Single<Dummy> { | |
// API 콜 | |
return Single.just(.dum) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment