подгружаються айтемы. Так вот: как правильней организовать взаимодействие интерактора и репозитория?
                  
                  
                  Репозиторий должен возвращать просто List<Item> или Flowable<List<Item»? Соответственно у репозитория будет либо только один метод - getItems(): List<Item>,
                  
                  
                  а код интерактора будет выглядить либо примерно так:
                  
                  
                  
                  
                  
                  private val itemsSubject = PublishRelay.create<Boolean>()
                  
                  
                  
                  
                  
                  fun items(): Flowable<Item> {
                  
                  
                  return itemsSubject.map { repository.getItems(it) }
                  
                  
                          .toFlowable(BackpressureStrategy.LATEST)
                  
                  
                  }
                  
                  
                  
                  
                  
                  fun onMapMoved(position: LatLng) {
                  
                  
                    itemsSubject.accept(position)
                  
                  
                  }
                  
                  
                  
                  
                  
                  Либо у репозитория тоже будет свой subject, на который будет подписан интерактор и при скроле карты интерактор будет вызывать у репозитория метод onLocationCahnged(position: LatLng),
                  
                  
                  т.е.репозиторий будет выглядить как-то так:
                  
                  
                  
                  
                  
                  private val itemsSubject = PublishRelay.create<Boolean>()
                  
                  
                  
                  
                  
                  fun items(): Flowable<Item> {
                  
                  
                  return itemsSubject.map { getItems(it) }
                  
                  
                          .toFlowable(BackpressureStrategy.LATEST)
                  
                  
                  }
                  
                  
                  
                  
                  
                  fun onLocationCahnged(position: LatLng) {
                  
                  
                    itemsSubject.accept(position)
                  
                  
                  }
                  
                  
                  
                  
                  
                  private fun getItems(position: LatLng): List<Item> {
                  
                  
                    //...
                  
                  
                    return items
                  
                  
                  }
                  
                  
                  
                  
                  
                  В таком случае интерактор будет выглядеть так:
                  
                  
                  
                  
                  
                  fun items(): Flowable<Item> {
                  
                  
                  return repository.items()
                  
                  
                  }
                  
                  
                  
                  
                  
                  fun onMapMoved(position: LatLng) {
                  
                  
                    repository.onLocationCahnged(position)
                  
                  
                  }
                  
                  
                  
                  
                  
                  Еще вопрос: где делать debounce()? В презентере или интеракторе?
                  
                  
                  Есть у кого-нибудь пример работы с картой в чистой архитектуре + rx?
                  
                  
                
Похожий кейс, если я не ошибаюсь, рассматривался на Мобиусе 2017 в докладе Александра и Евгения. У вас есть к нему доступ?
Посмотрел доклад Евгения и Александра, но всё ещё не понял как правильней организовать взаимодействие интерактора и репозитория. Помогите.
Обсуждают сегодня