package co.smartreceipts.android.ocr.widget.configuration; import javax.inject.Inject; import co.smartreceipts.android.di.scopes.FragmentScope; import co.smartreceipts.android.utils.log.Logger; import co.smartreceipts.android.widget.viper.BasePresenter; @FragmentScope public class OcrConfigurationPresenter extends BasePresenter<OcrConfigurationView, OcrConfigurationInteractor> { @Inject public OcrConfigurationPresenter(OcrConfigurationView view, OcrConfigurationInteractor interactor) { super(view, interactor); } @Override public void subscribe() { view.present(interactor.getEmail()); // Set the current checkbox values compositeDisposable.add(interactor.getOcrIsEnabled() .subscribe(view.getOcrIsEnabledConsumer())); compositeDisposable.add(interactor.getAllowUsToSaveImagesRemotely() .subscribe(view.getAllowUsToSaveImagesRemotelyConsumer())); // Persist values from checkbox toggling compositeDisposable.add(view.getOcrIsEnabledCheckboxChanged() .doOnNext(ocrIsEnabled -> Logger.debug(OcrConfigurationPresenter.this, "Updating ocrIsEnabled setting: {}", ocrIsEnabled)) .subscribe(interactor::setOcrIsEnabled)); compositeDisposable.add(view.getAllowUsToSaveImagesRemotelyCheckboxChanged() .doOnNext(saveImagesRemotely -> Logger.debug(OcrConfigurationPresenter.this, "Updating saveImagesRemotely setting: {}", saveImagesRemotely)) .subscribe(interactor::setAllowUsToSaveImagesRemotely)); // Show remaining scans compositeDisposable.add(interactor.getRemainingScansStream() .subscribe(view::present)); // Show available purchases list compositeDisposable.add(interactor.getAvailableOcrPurchases() .doOnSuccess(availablePurchases -> Logger.info(OcrConfigurationPresenter.this, "Presenting list of purchases: {}.", availablePurchases)) .subscribe(view::present, throwable -> Logger.warn(OcrConfigurationPresenter.this, "Failed to get available purchases.", throwable))); // Track user purchase clicks compositeDisposable.add(view.getAvailablePurchaseClicks() .doOnNext(availablePurchase -> Logger.info(OcrConfigurationPresenter.this, "User clicked to buy purchase: {}.", availablePurchase)) .subscribe(interactor::startOcrPurchase)); } }