подгружаються айтемы. Так вот: как правильней организовать взаимодействие интерактора и репозитория?
Репозиторий должен возвращать просто 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 в докладе Александра и Евгения. У вас есть к нему доступ?
Посмотрел доклад Евгения и Александра, но всё ещё не понял как правильней организовать взаимодействие интерактора и репозитория. Помогите.
Обсуждают сегодня