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