Skip to content

YuriyBosov/TestApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 

Repository files navigation

TestApp

TODO: App state-preservation/restoration

DONE:

1.  Навигация в приложение создана на основе AppCoordinator. Для демонстрации понимания\умения работать с координаторами создал небольшую навигация по приложению, а именно такие разделы:

  • экран запуска приложения Start Flow
  • авторизация Auth Flow
  • основной раздел приложения Main Flow
  1. Start Flow - задача этого модуля к примеру может быть такая: проверить валидность сессии пользователя, если надо восстановить ее; проверить актуальность версии приложения, при необходимости показать пользователю окно о выходе новой версии приложения или какой-то другой функционал

  2. Auth Flow - задача этого модуля эмитировать авторизация в приложении (не надо вводить ни каких данных, нет валидации полей, просто показан пример как с помощью координаторов разруливать навигацию). При Login или Registration мы сохраняем флаг авторизации в классе Session. Так же есть возможность выполнить Logout.

  3. Main Flow - задача этого модуля показать пример создание навигации в приложении на основе TabBarController с использованием координаторов. Раздел состоит из 4 контроллеров\координаторов.

  • список постов Posts
  • список пользователей Users (пустой контроллер, просто нужен для наполнения таббара)
  • список сообщение Messages (пустой контроллер, просто нужен для наполнения таббара)
  • настройки Settings
  1. Основную задачу по навигации решает AppCoordinator. Он отвечает за переходы между разными flow. При необходимости может "прокинуть" в другие контроллеры дополнительные опции (к примеру опции при переходе в приложение через дип линк или если перешли в приложение по нажатию пуша)

  2. Posts раздел представлен в виде списка топ-постов, можно выбрать период. Реализована возможность перейти на детальный экран поста (просто показан пример как пробросить данные на другой контроллер использую ViewModel, Coordinator, сам детальный экран пустой). Список с pull to refresh, load more(постраничная), просмотр фото на отдельном экране, просмотр видео.

  3. Settings раздел позволяет выполнить Logout. Показан пример как это реализовывать с помощью координаторов

  4. Сущности, которые получаем из ресурса Reddit - Post (содержит минимальный набор полей, который нужно для реализации тестового задания). Для удобства добавил некоторые простые сущности такие как PostResponse, Image, Preveiw, Video. Все сущности поддерживают протокол Decodable (удобно, быстро, просто)

  5. Для работы с сетью создан отдельный простой класс, внутри класса используем URLSession

  6. Для предоставления данных во ViewContoller созданы классы ViewModel (подразумевается такой функционал - предоставление данных контролеру, валидация и отправка данных с контроллера, обработать интерактив от пользователя)

  7. Отображения данных в ячейке реализовано в отдельном классе CellViewModel (задача класса приготовить данные для ячейки, настроить ячейку, обработать интерактив от пользователя)

  8. Дополнительно сделал раздел, который отвечает за просмотр фото на весь экран, в нем же добавил возможность поделится фото (при условии, что мы фото закешировали)

  9. Дополнительно сделал механизм простого кеширования картинок (так как нельзя было использовать что-то стороннее)

  10. В приложении показан пример, как правильно реализовать поддрежку ориентация приложения, поддрежку status bar style

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages