- Поменять возвращаемый тип в
CatsServiceи добавить модификаторsuspend - Переписать логику в презентере с
Callbackна корутины иsuspendфункции - Реализовать свой скоуп: PresenterScope с
MainDispatcherи CoroutineName("CatsCoroutine") в качестве элементов контекста - Добавить обработку исключений через try-catch. В случае
java.net.SocketTimeoutExceptionпоказываем Toast с текстом "Не удалось получить ответ от сервером". В остальных случаях логируем исключение вotus.homework.coroutines.CrashMonitorи показываем Toast сexception.message - Не забываем отменять Job в
onStop()
Добавить к запросу фактов запрос рандомных картинок с https://api.thecatapi.com/v1/images/search
- На каждый рефреш экрана должен запрашиваться факт + картинка: добавляем сетевой запрос и реализуем логику аналогичную первой задаче. Для загрузки изображений уже подключена библиотека Picasso
- В метод
view.populateпередаем 1 аргумент, поэтому необходимо реализовать модель презентейшен слоя в которой будут содержаться необходимые данные для рендеринга(текст и ссылка на картинку) - Отменятся запросы должны одновременно
- Реализовать наследника
ViewModelи продублировать в нем логику изCatsPresenter, с необходимыми изменениями. ИспользуйтеviewModelScopeв качестве скоупа. - Добавить логирование ошибок через CoroutineExceptionHanlder. Используйте класс CrashMonitor в качестве фейкового CrashMonitor инструмента
- Создать sealed класс
Result. Унаследовать от него классыSuccess<T>,Error. Использовать эти классы как стейт необходимый для рендеринга/отображени ошибки