package me.devsaki.hentoid.dirpicker.ops; import org.greenrobot.eventbus.EventBus; import java.io.File; import me.devsaki.hentoid.dirpicker.model.DirTree; import me.devsaki.hentoid.dirpicker.observable.MakeDirObservable; import me.devsaki.hentoid.dirpicker.observers.MakeDirObserver; import rx.Observable; import rx.Observer; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; /** * Created by avluis on 06/12/2016. * Make Directory Operation */ class MakeDir { private final DirTree dirTree; private final EventBus bus; private Subscription subscription; MakeDir(DirTree dirTree, EventBus bus) { this.dirTree = dirTree; this.bus = bus; } void process(File rootDir, String name) { cancelPrevOp(); Observable<File> observable = new MakeDirObservable().create(rootDir, name); Observer<File> observer = new MakeDirObserver(dirTree, bus); subscription = observable.observeOn(Schedulers.io()) .onBackpressureDrop() .observeOn(AndroidSchedulers.mainThread()) .subscribe(observer); } private void cancelPrevOp() { if (subscription != null && !subscription.isUnsubscribed()) { subscription.unsubscribe(); } subscription = null; } }