- Поменять возвращаемый тип в
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
. Использовать эти классы как стейт необходимый для рендеринга/отображени ошибки