Приложение загружает мемы с сайта developerslife.ru.
Категория: random
RxJava3 + Retrofit2 + Glide + ViewModel
- Исключено повторение мемов, загружаются только уникальные (в рамках сессии);
- Только gif, другие формат исключены (фильтрация на клиентской стороне, публичного api не увидел, искать не стал);
- Результаты кэшируются во ViewModel;
- Различные состояния загрузки данных получают отклик в UI;
- Исключительные ситуации обработаны по-разному. Типы исключений можно найти в
package model
, UI обработку вCardFragment.handleError(Throwable error)
; - UI различает загрузку JSON и .gif и предоставляет к каждому типу свой ProgressBar;
- При отсутствии сети можно листать уже скачанные мемы;
- Адресная строка сверху - ну это просто топ.
Отвечаю на нереализованные дополнительные пункты:
Q: Почему не на Kotlin?
A: Пока неуверенно, заняло бы больше времени. Не знаком с корутинами вообще, а более гибкий ООП со всякими companion object
того не стоил, хоть местами и очень хотелось.
Q: Где тесты?
A: Тесты были бы сложными, без DI тут никак, а опыта немного - вопрос времени.
Q: Где секции?
A: Начал делать, но не успел. В этом случае пришлось бы переписывать ViewModel часть + переносить всё в репозиторий, еще и поведение UI бы изменилось. Если бы API выдавало также по 1 записи, то вероятно, что успел бы к дедлайну.