feat(hw): migrate project to rxjava #162
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
ReactiveCats
Переведите сетевой запрос с
retrofit.Call
на RX цепочку. Для этого подключите Retrofit адаптер, поменяйте возвращаемые типы функцийПоменяйте логику в
CatsViewModel.kt
с колбеков на RX. Логику обработки успеха/ошибки из коллбека необходимо перенести в терминальные коллбеки RX цепочки. Не забудьте очистить подписки когдаViewModel
уничтожаетсяРеализуйте функцию
otus.homework.reactivecats.LocalCatFactsGenerator#generateCatFact
, так, чтобы она возвращалаFact
со случайной строкой из массива строкR.array.local_cat_facts
обернутую в подходящий стрим(Flowable
/Single
/Observable
и т.п)Реализуйте функцию
otus.homework.reactivecats.LocalCatFactsGenerator#generateCatFactPeriodically
так, чтобы она эмитилаFact
со случайной строкой из массива строкR.array.local_cat_facts
каждые 2000 миллисекунд. Если вновь заэмиченный Fact совпадает с предыдущим - пропускаем элемент.Реализуйте функцию
otus.homework.reactivecats.CatsViewModel#getFacts
следующим образом: каждые 2 секунды идем в сеть за новым фактом, если сетевой запрос завершился неуспешно, то в качестве фоллбека идем за фактом в уже реализованныйotus.homework.reactivecats.LocalCatFactsGenerator#generateCatFact
.