Мне трудно позвонить в мой API.Я использую Reactivex с kotlin и Flowables.Мой API возвращает список элементов, если дата, прошедшая через заголовок «If-Modified_since», меньше, чем при последнем обновлении.Если обновления нет, я получаю как приложение, возвращающее приложение для Android ошибку 304.
Мне нужно выполнить следующую процедуру.1-> Я звоню в API 2-> Если звонок успешен, сохраняю список в Realm и возвращаюсь в viewmodel. 3-> Если ошибка 304, я выполняю поиск в кеше (Realm) элементов 4-> Если это другая ошибка, я обычно возвращаю ошибку для ViewModel
Вот код ниже, но я не уверен, так ли это.
override fun getTickets(eventId: String): Flowable<List<Ticket>> {
return factory
.retrieveRemoteDataStore()
.getTickets(eventId)
.map {
saveTickets(it)
it
}.onErrorResumeNext { t: Throwable ->
if (t is HttpException && t.response().code() == 304) {
factory.retrieveCacheDataStore().getTickets(eventId)
} else
//Should return error
}
Вопросесть, какой лучший способ сделать это?
Спасибо.