/Matafonov

Тестовое задание для Tinkoff Fintech

Primary LanguageJava

Матафонов Денис, denisredis2014@gmail.com

Тестовое задание курса "Тинькофф Финтех" по Android

Как оно работает

Три вкладки - три подборки гифок. Первая - рандомный выбор, бесконечная, результаты сохраняются во время активной сессии. Вторая - последние посты (latest), третья - лучшие (top). Здесь мы берем пять записей (одну страницу с сайта).

Приложение запоминает, на каком месте мы остановились во всех трех вкладках. С первой записи нельзя вернуться назад, дальше история записывается, а гифки кэшируются. На второй и третьей страницах можно добраться до последнего поста.

Чтобы начать работу, нужен интернет. Если соединения нет, пользователю прилетить снэкбар с предложением открыть настройки, а на карточке будет крутиться гифка загрузки-ожидания.

И еще - если апи не дал ссылку на гифку в записи, мы все равно покажем шутку, приправив потерянным Траволтой, ищущим гифку.

Почему оно работает

Активность заполняется PlaceholderFragment'ами, разметка для всех ситуаций одна, все связано ViewModel и PagerAdapter.

За обращение к сервису отвечает ApiUtil, за проверку соединения ConnectionUtil. Объект первого содержит описания и ссылки загруженных записей (во второй и третьей вкладке подгружаем сразу, на рандомной - по мере необходимости). За кэширование и отрисовку самих гифок спасибо Glide.

Внутри кода фрагмента вызываются два потока - один инициализирует списки данных, второй отвечает за подгрузку новых рандомных картинок.

P.S. до Unit-test'ов не дошло - слишком долго залипал на гифки в "живом" приложении. Спасибо за задание :)