Написать приложение с одним экраном на котором будет скролящийся список гифок из раздела популярные с сайта giphy. Реализовать динамическую загрузку спика, а так же все необходимые состояния загрузки/ошибки итд. При возникновении ошибок у пользователя должна быть возможность повторить выполнение действия завершившегося с ошибкой.
-
При первичной ошибке загрузке списка должно быть сообщение по центру экрана и кнопка повторить
-
При ошибке загрузки конкретной гифки вместо нее должна отображаться кнопка повторить загрузку
-
Во время загрузки гифки должен быть прогресс бар (на данном этапе достаточно просто крутилки)
-
Если пользователь долистал до конца списка до загрузки следующей его части внизу списка должна отображаться крутилка
-
При ошибки догрузки списка внизу списка должна быть кнопка повторить загрузку
-
Приложение должно корректно реагировать на поворот экрана
-
Код должен быть написан "по клину"
-
Должно быть разбиение на три основных пакета
- Ui
- Domain
- Data/Repository/Api/Services (вообще по клину он Data но можно разбить на секолько по желанию)
-
Приложение должно использвать dagger2 для предоставления зависимостей
-
Необходимо заранее заложить использование подходов и библиотек: Single activity application && google navigation components
-
На Domain слой нужно написать юнит тесты
-
На ViewModel нужно написать юнит тесты
Реализовать искусственное замедление сетевого взаимодействия, а так же возможность завершать ошибкой случайные закпросы.
Желательно это сделать максимально обобщенно, что бы не засорять код дебаг вставками, в идеале вся логика искуственного замедления должна быть только в debug
// TODO
- Kotlin
- Coroutines
- MVVM (Google viewModel without LiveData)
- Dagger2
- Google Navigation Component
- Ktor OR Retrofit
- Kotlin serialization
- Room
- Compose
- Giphy sdk
- Glide
- Gson
- LiveData
Так же можно на свое усмотрение использовать любые дополнительные библиотеки (ну кроме запрещенных конеш)