I am trying to convert my code into Compose. I have libraries but all have Observable type which can't be use with Flow. I need its result in Flow.
protected abstract Observable<T> UseCase();
public void execute(Subscriber<T> useCaseSubscriber) {
mObservable=this.buildUseCaseObservable();
this.subscription = this.buildUseCaseObservable()
.subscribeOn(Schedulers.io())
.doOnError(throwable -> {
}).doOnNext(t -> {
ObserverManager.getInstance().remove(useCaseSubscriber);
}).doOnComplete(() -> {
ObserverManager.getInstance().remove(useCaseSubscriber);
})
.observeOn(postExecutionThread.getScheduler())
.subscribeWith(useCaseSubscriber);
if(!(this instanceof EventProcessorUseCase)) {
ObserverManager.getInstance().cached(useCaseSubscriber);
}
}
And I am trying to access above method like
public class ForgotPasswordUC extends UseCase<String> {
private String email;
public ForgotPasswordUC(String email,Repository repository, PostExecutionThread postExecutionThread) {
super(repository, postExecutionThread);
this.email=email;
}
@Override
protected Observable<String> buildUseCaseObservable() {
return repository.forgotPassword(email);
}
}
I am using UseCase to call APIs but Failed to access result in case of Compose Access. How can I write above usecase which will return Flow related values from where we can Collect?
here is a primitive method,but it works effectively.
Personally, your code looks strange. Why don't you return Observable? It can make it easy for Rx to convert Flow.
For example