Тестовое задание взято у appKODE с публичного репозитория gitHub.
Для удобства чтения все Pull Request(ы) и Commit(ы) будут на русском языке.Для ознакомления с устройством фичи можно заглянуть в истории Pull Request(ов).
Launch | Search |
---|---|
![]() |
![]() |
Filter | Localization |
---|---|
![]() |
![]() |
Internet Error | Internal Error |
---|---|
![]() |
![]() |
Call | Pull to Refresh |
---|---|
![]() |
![]() |
- Launch:
- Кастомный экран запуска
- UI-cкелет во время загрузки данных с сервера
- Сохранение и установление последней вкладки
- Search
- Поиск по Имени
- Поиск по Тегу
- Ошибка поиска (не найдено)
- Filter
- Фильтрация по алфавиту
- Фильтрация по дню рождения (возрастание)
- Localization
- Локализация Русского языка
- Локализация Английского языка
- Error
- Обработка ошибки с подключением к интернету
- Обработка внутренних ошибок с сервера
- Details
- Вызов при нажатии на номер
- Закрытие экрана по pop-свайпу
- Pull to refresh
- Если потянуть таблицу — обновятся пользователи
- Figma like design
- Склонение год/года/лет
- Номер телефона по маске
- Первые 3 буквы месяца
- Язычок в заголовке модального экрана
- Поле ввода по макету: фильтр-кнопка и лупа-кнопка меняют цвет в соответствии состояния поля
- Темная тема
- Юнит-тестирование
- UISheetPresentationController при >iOS14
- Кастомный анимированный индикатор обновления (анимация)
- Свайп для перехода между вкладками (как в Telegram)
- Реактивщина: RxSwift || Combine
Библиотеки использовать можно свободно на своё усмотрение, но будет круче, если сделать всё самостоятельно.
Q: Можешь ли аргументировать почему использовал SnapKit?
Q: Почему выбрал в качестве архитектуры — MVVM?
A: Во-первых, на сколько мне известно, KODE используют эти технологии, соответственно мне захотелось сделать все приближено к вашим условиям. Во-вторых, до этого не использовал ни то, ни другое, а верстать через NSLayoutConstraint и Anchors вроде умею (пример). Потому решил сделать небольшой челлендж.
Q: С каким трудностями столкнулся?
A: Идти сразу в реактивщину, не зная ни MVVM, ни одного фреймворка – плохая идея ). Какое-то время не мог понять причину ошибки загрузки картинок с сервера (HTTPHeader: dynamic=true
). Ну, еще можно выделить передачу данных с модального окна назад на топ, и работу с датой. Так что, наверное, все как у людей :).
Q: Не вижу раздела с затраченным временем, почему?
A: Тк, я не сразу стал выполнять задание, а какое-то время потратил на изучение вышесказанного, то не смог зафиксировать затраченное время. Однако, ушло примерно ±1.5 недели на все с условием, что тратил примерно 2-4 часа в день (в выходные отдыхал — лето 🙃 ).