loadBy method

Stream<Progress<Result>?> loadBy(
  1. Stream<ContentLoaderOperate> trigger
)

Implementation

Stream<Progress<Result>?> loadBy(Stream<ContentLoaderOperate> trigger) {
  ContentLoaderOperate? operate;
  return trigger
      .doOnData((contentLoaderOperate) => operate = contentLoaderOperate)
      .switchMap<Progress<Result>>((t) =>
      Stream.fromFuture(this())
          .map<Result>((value) => Success<C>(value))
          .onErrorReturnWith((error, stackTrace) {
        operate?.onError?.also((onError) {
          onError(error, stackTrace);
        });
        return Failure(null, error, stackTrace);
      })
          .map<Progress<Result>>((result) => Complete(result))
          .startWith(InProgress<Result>())
  );
}