Есть метод, который возвращает
Flowable<List<Item>>.
Из-за
take(1) мы получаем список, но перестаем получать обновления из БД. Если его убрать и при этом в БД не будет никаких записей, то список в итоге не вернётся.
Каким образом можно проверить есть ли в БД записи и в случае отсутствия получить данные от сервера и вернуть затем уже локальный список?
fun loadItems(forceRemote: Boolean): Flowable<List<Item>> {
return if (forceRemote) {
loadRemoteData()
} else {
itemDataSource.loadLocalItems().take(1).filter { !it.isEmpty() }.switchIfEmpty(loadRemoteData())
}
}
private fun loadRemoteData(): Flowable<List<Item>> {
return itemDataSource.loadRemoteItems().switchMap {
itemsDataSource.addItems(it).andThen(itemDataSource.loadLocalItems())
}
}