страница, где я должен показать данные с cети. Кроме этого я кэширую данные результата сервера. Валидность кэша 1 час. Всё работа касательно запросов в сеть и кэширование результатов ответа сервера происходит в Repository. Мне нужно сделать так, чтобы если запрос в сеть вернёт ошибку сервера, то в течение 1 часа показывать данные из кэша.
Пока у меня есть два решение проблемы, они похожие между собой, разница только в том, что в одном месте проверку я делаю в Repository, а другом месте во ViewModel.
Первый вариант, если произойдёт ошибка сервера, то в Repository в onErrorResumeNext узнать тип ошибки, если тип ошибки будет серверная ошибка, то зафиксировать время когда произошла ошибка и исходя из этого последующий час при запросе данных отправлять данные из кэша.
Второй вариант, если произойдёт ошибка сервера, то во ViewModel при обработки ответа с Repository в onError узнать тип ошибки, если тип ошибки будет серверная ошибка, то зафиксировать время когда произошла ошибка и исходя из этого последующий час при запросе данных отправлять данные из кэша.
Какой вариант лучше, делать проверки в Repository или во ViewModel? Или есть ли какие-то лучше решение данной задачи?
Это как я получаю данные с Repository
https://gist.github.com/githubgist123/7e027675bb4db07fef606e23f39f8a96
1. Исключение ловить в репозитории 2. Сделать обертку, которая будет возвращать и и сключение и данные из кеша. Почему только при исключении данные из кеша - непонятно. Я всегда пропускаю данные через кеш и возвращаю кеш.
Обсуждают сегодня