Rxjava2 цепочка с concatMapIterable - PullRequest
       56

Rxjava2 цепочка с concatMapIterable

0 голосов
/ 14 февраля 2020

Вот что мне нужно: получить продукты из БД -> проверить, закончен ли продукт -> отправить готовый продукт -> удалить готовый продукт -> удалить изображение этого продукта -> получить новую порцию продуктов -> проверить, нет ли продукта Существует -> Добавить продукт в БД -> Загрузить изображение этого продукта Вот мой код:

@SuppressLint("CheckResult")
public void makeSync(final Context context) {
    //getting finished products from db
  productsDao.getFinishedProducts().toObservable()
            //iterate through all items
            .concatMapIterable(new Function<List<RegistrationProduct>, Iterable<RegistrationProduct>>() {
 @Override
   public Iterable<RegistrationProduct> apply(List<RegistrationProduct> products) throws Exception {
                  return products;
                }
            })
 //Registration product
            .concatMapCompletable(new Function<RegistrationProduct, CompletableSource>() {
 @Override
   public CompletableSource apply(RegistrationProduct product) throws Exception {
       //send product!
        return productSendService.sendProduct(UrlHelper.getUrl(context), product)
                            //remove from database
                            .andThen(productsDao.delete(product.id)
                                    //remove image of product
                                    .andThen(ImageHelper.removeImageCompletable(product.imgSrc)));
                }
            })
//get products from server
                .andThen(getRegistrationProductsService
                        .getProducts(UrlHelper.getUrl(context))
                .toObservable().concatMapIterable(new Function<List<RegistrationProduct>, Iterable<?>>() {
  @Override
    public Iterable<?> apply(List<RegistrationProduct> products) throws Exception {
                return null; //add products if not exists
             }
       }));    
    }

Можно ли использовать цепочку, как это? Спасибо за вашу помощь!

...