ANDR-104: Интеграция feature toggle в Interview Trainer#155
Open
Jeskrill wants to merge 32 commits into
Open
Conversation
… CreateQuiz (#94) * Создан модуль Interview_Trainer * Моделирование состояний первого экрана интервью тренажера - CreateQuiz * Добавление необходимых ресурсов для верстки первого экрана экрана CreateQuiz * Добавление базовых классов фичи * Базовая верстка первого экрана CreateQuizScreen.kt * Добавление объекта интервью тренажера в пути фич для будущей навигации * ANDR-5: VoSpecialization перенесен внутри Loaded * ANDR-5: SkillButton.kt компонент изменен. Убрана полная заливка кнопки при активации/нажатии на нее * ANDR-5: Добавлены дополнительные строковые ресурсы для возможных ошибок * ANDR-5: Создание превью и правки по отступам * ANDR-5: Экран загрузки CreateQuiz * ANDR-5: Использование экрана загрузки в главном для @StaticPreview * ANDR-5: Удалены неиспользуемые строки ошибок * ANDR-5: Убран лишний класс параметров. В StaticPreview передаем сразу стейт * ANDR-5: Убрана преписка Mock у @composable * ANDR-5: id стало Long по аналогии с другими классами * ANDR-5: Command'ы и Result'ы убраны из папки intents. Сама папка удалена * ANDR-5: Создан интерфейс юзкейса * ANDR-5: Созданы Domain модели * ANDR-5: ВьюМоделька экрана CreateQuiz. Сделана не до конца * ANDR-5: Изменение кол-ва вопросов через данные у ивента * ANDR-5: изменил путь файла * ANDR-5: Изменение кода экрана. Настроено правильное прокидывание лямбд в UI * ANDR-5: Сделано Динамическое превью * ANDR-5: убраны default параметры * ANDR-5: убраны лишние классы * ANDR-5: Создан маппер * ANDR-5: имплементирован маппер и отдельный флоу ввода пользователя для изменения стейта * ANDR-5: сделано рабочее динамик превью * ANDR-5: убран default диспатчер при обновлении ввода пользователя * ANDR-5: убраны параметры по умолчанию в верстке
* ANDR-5: Создан маппер * ANDR-5: имплементирован маппер и отдельный флоу ввода пользователя для изменения стейта * ANDR-5: сделано рабочее динамик превью * ANDR-5: убран default диспатчер при обновлении ввода пользователя * ANDR-5: убраны параметры по умолчанию в верстке * ANDR-5: Созданы нужные бизнес модели * ANDR-5: Создан интерфейс репозитория * ANDR-5: ЮзКейс + добавлены параметры страницы и общего кол-ва в запрос * ANDR-5: реквест вынес в отдельный файл * ANDR-5: подключен модуль с тестами * ANDR-5: Создан маппер дата в домейн * ANDR-5: Сделана реализация репозитория * ANDR-5: Пройдены успешные тесты на DataToDomainMapper * ANDR-5: Юзкейс убран (на данном этапе не нужен) * ANDR-5: Правки.Вторая функция в маппере приватная; Классы для тестов перенесены внутрь класса самих тестов; Сам тест сокращен до 1 функции и 1 аргументПровайдера * ANDR-5: Правки. Домейн классы имеют только гарантированные поля * ANDR-5: убраны лишние параметры из тестов * ANDR-5: переименовал функцию на map
* ANDR-5: добавлен юзкейс * ANDR-5: Скрин маппер теперь маппит домейн в VO * ANDR-5: Юзкейс разделен на интерфейс и импл * ANDR-5: Подключение юзкейса и маппера во вьюмодели * ANDR-5: Удаление лишних созданий корутин при изменении ввода юзера (и стейта) * ANDR-5: Переименован файл теста маппера dataToDomain * ANDR-5: Новый тест файл для теста ScreenMapper'а * ANDR-5: Правки для ktlint * ANDR-5: Проставлен везде is для удобства * ANDR-5: Удалены ненужные файлы тестов (уже удаленные) * ANDR-5: Параметризированные тесты вынесены наверх в самих классах тестов
# Conflicts: # settings.gradle.kts
…ация + EntryPoint (#102) * ANDR-71: Добавление нужных текстов для entry-point'а * ANDR-71: Добавление сущности тренажера в бизнес логике главного экрана * ANDR-71: Добавление обработки команды по тренажеру * ANDR-71: Добавлена функция обработки навигации к тренажеру и передается в параметр главного экрана * ANDR-71: Тест Превью с кнопкой тренажера * ANDR-71: Использование лямбды навигации для отправки комманд * ANDR-71: Изменена внешняя функция навигации-входа в фичу тренажера * ANDR-71: Добавлена реализация InterviewTrainerFeatureImpl. Внутри регистрация графа, обработка навигации назад и обработка навигации к экрану тренировки * ANDR-71: правки по ktlint'у * ANDR-71: ScreenMapper теперь класс * ANDR-71: Константы названий экранов интервью-тренажера * ANDR-71: Реворк навигации * ANDR-71: Улучшение экрана. Подключение вьюмодели и команд * ANDR-71: Вторичные Модули DI * ANDR-71: Вторичный маппер DI модуль * ANDR-71: Основной DI модуль экрана * ANDR-71: Подключение модуля тренажера во все приложение * ANDR-71: Подключение KOIN модуля * ANDR-71: Исправлен DI модуль для юзкейса * ANDR-71: Добавил экрану скролл * ANDR-71: Навигация с главного экрана на первый экран тренажера (CreateQuizScreen) * ANDR-71: Создание путей для экрана тренажера * ANDR-71: Убран хардкод путь экрана CreateQuiz * ANDR-71: Исправлен класс теста * ANDR-71: проставлен is * ANDR-71: добавлен строковой ресурс названия 1 экрана тренажера для прокидывания по навигации * ANDR-71: используем pathManager для навигации к экрану тренировки * ANDR-71: handleCommand приватная * ANDR-71: перегрузка метода получения состояния * ANDR-71: переименован юзкейс * ANDR-71: Рефактор DI. Все модули объединены в один * ANDR-71: коммент к DI * ANDR-71: Подключение Immutable Collections * ANDR-71: Удаление наружнего апи интерфейса * ANDR-71: Оптимизация навигации * ANDR-71: Навигация теперь принимает не строку, а число айди ресурса * ANDR-71: исправлены тесты * ANDR-71: В комментарии вставлены TODO()
… верстка экранов (#97) * ANDR-55 добавлен экран тренировки и класс состояний тренировки * ANDR-55: добавление иконок * ANDR-55: верстка экрана, добавление в QuizState enum class, создание экрана загрузки * ANDR-55: добавление строк для экрана тренажера * ANDR-55: добавление LoadingScreen * ANDR-55: добавление Command, Event, ScreenMapper, State * ANDR-55: обновление string ресурсов * ANDR-55: создание и написание ViewModel * ANDR-55: окончательная верстка. Создание динамического превью. Добавление дополнительно состояния для статического превью * ANDR-55: увеличение длины ответа для данных превью * ANDR-55: рефакторинг. Кнопка Проверить результат м.б. неактивной * ANDR-55: увеличение длины ответа для данных превью * ANDR-55: удаление превью из LoadingScreen * ANDR-58: из Command и Event наследники заменены на ToDo * ANDR-58: рефакторинг QuizScreen и QuizScreenLoading рефакторинг ViewModel. Перенесена логика из ScreenState в ScreenMapper. Из тела ScreenState убрана логика, добавлены новые поля * ANDR-58: подключение immutable библиотеки * ANDR-58: В стейте Loaded изменение коллекций на Persistent * ANDR-58: изменение под Persistent коллекции стейта * ANDR-58: добавление static preview * ANDR-58: убраны лишние изменения
…параметра отступов
…нов, контекст не передается, а создается внутри каждой @composable, убран хардкод contentDescription)
…ения (#109) * ANDR-71: Добавление нужных текстов для entry-point'а * ANDR-71: Добавление сущности тренажера в бизнес логике главного экрана * ANDR-71: Добавление обработки команды по тренажеру * ANDR-71: Добавлена функция обработки навигации к тренажеру и передается в параметр главного экрана * ANDR-71: Тест Превью с кнопкой тренажера * ANDR-71: Использование лямбды навигации для отправки комманд * ANDR-71: Изменена внешняя функция навигации-входа в фичу тренажера * ANDR-71: Добавлена реализация InterviewTrainerFeatureImpl. Внутри регистрация графа, обработка навигации назад и обработка навигации к экрану тренировки * ANDR-71: правки по ktlint'у * ANDR-71: ScreenMapper теперь класс * ANDR-71: Константы названий экранов интервью-тренажера * ANDR-71: Реворк навигации * ANDR-71: Улучшение экрана. Подключение вьюмодели и команд * ANDR-71: Вторичные Модули DI * ANDR-71: Вторичный маппер DI модуль * ANDR-71: Основной DI модуль экрана * ANDR-71: Подключение модуля тренажера во все приложение * ANDR-71: Подключение KOIN модуля * ANDR-71: Исправлен DI модуль для юзкейса * ANDR-71: Добавил экрану скролл * ANDR-71: Навигация с главного экрана на первый экран тренажера (CreateQuizScreen) * ANDR-71: Создание путей для экрана тренажера * ANDR-71: Убран хардкод путь экрана CreateQuiz * ANDR-71: Исправлен класс теста * ANDR-71: проставлен is * ANDR-71: добавлен строковой ресурс названия 1 экрана тренажера для прокидывания по навигации * ANDR-71: используем pathManager для навигации к экрану тренировки * ANDR-71: handleCommand приватная * ANDR-71: перегрузка метода получения состояния * ANDR-71: переименован юзкейс * ANDR-71: Рефактор DI. Все модули объединены в один * ANDR-71: коммент к DI * ANDR-71: Подключение Immutable Collections * ANDR-71: Удаление наружнего апи интерфейса * ANDR-71: Оптимизация навигации * ANDR-71: Навигация теперь принимает не строку, а число айди ресурса * ANDR-71: исправлены тесты * ANDR-71: В комментарии вставлены TODO() * ANDR-71: Обработка ошибок при запросе * ANDR-71: строковые ресурсы для contentDescription * ANDR-71: Изменение верстки экрана загрузки; добавление передаваемого параметра отступов * ANDR-71: небольшой рефактор основного экрана (Box вынесен внутрь экранов, контекст не передается, а создается внутри каждой @composable, убран хардкод contentDescription) * ANDR-71: добавлен дополнительный ресурс * ANDR-71: убрана зависимость от класса TextOrResource (чтоб избавиться от создания контекстов) * ANDR-71: убран ненужный пустой первичный конструктор * ANDR-71: Добавлен IO диспатчер на получения списка специализаций
… Domain (#119) * ANDR-59: создание сущностей domain слоя * ANDR-59: реализация репозитория, написание Data to Domain маппера * ANDR-59: новые response и dto для мок-квиза. Добавление функций в ApiService * ANDR-59: изменение репозитория, реквеста, респонса и маппера * ANDR-59: написание теста на DataToDomainMapper * ANDR-59: убраны дефолт параметры
…на (#130) * ANDR-63 - Добавление ViewModel * ANDR-63 - Добавление стейтов * ANDR-63: - Добавление строковых ресурсов * ANDR-63: - Добавление скринмаппера * ANDR-63: - Загрузка экрана * ANDR-63: - Полная верстка экрана * ANDR-63: - Интерфейс событий * ANDR-63: - Убрал закардхорженный текст * ANDR-63: - Добавил Compose элементы ивана с кнопками знаю/не знаю * ANDR-63: - Убрал лишние параметры из TitleSection и SkillProgressRow * ANDR-63: - убрал ивенты * ANDR-63: - Изменил логику, теперь без двух стейтов * ANDR-63: - Изменил на PersistentList * ANDR-63: - Изменил на в маппере скиллы также на persistentlist * ANDR-63: - набольшие правки в экране, связанные с изменением других файлов * ANDR-63: - Малые правки для ktlint и добавление пробела между ресурсами * ANDR-63: Изменил ViewModel на BaseViewModel * ANDR-63: Оптимизация ktlint * ANDR-63: Удалил лишние параметры * ANDR-63: Оптимизация ktlint * ANDR-63: Удалил параметр заголовка и прокинул через стейт * ANDR-63: Оптимизация ktlint * ANDR-63: Правки по дизайну, в частности SkillProgressRow
… + Тесты (#132) * ANDR-60: изменены getScreenState и динамическое превью. В VM удалены мок данные * ANDR-60: добавление модели вопроса с ответом и сущности результата квиза * ANDR-60: определены ивенты и команды * ANDR-60: доработка VM, ScreenMapper и нормальная работа динамического превью * ANDR-60: написание теста на ScreenMapper. Обработка исключения в VM * ANDR-60: удаление недоступного для реализации функционала * ANDR-60: улучшение оптимизации рекомпозиций. Небольшие фиксы
* ANDR-95: вынос общих полей ввода и логики валидации в core модули * ANDR-95: Обновил core/ui/build.gradle.kts: Добавил implementation(libs.androidx.icons) * ANDR-95: улучшена функция для максимальной переиспользуемости. Так же улучшена Preview часть * ANDR-95: переименовал функции понятным для всех неймингом, исправил ошибки ktlint * ANDR-95: рефакторинг TextField + реализация SearchTextField * ANDR-95: удаление старого после рефакторинга
* ANDR-71: Добавление нужных текстов для entry-point'а * ANDR-71: Добавление сущности тренажера в бизнес логике главного экрана * ANDR-71: Добавление обработки команды по тренажеру * ANDR-71: Добавлена функция обработки навигации к тренажеру и передается в параметр главного экрана * ANDR-71: Тест Превью с кнопкой тренажера * ANDR-71: Использование лямбды навигации для отправки комманд * ANDR-71: Изменена внешняя функция навигации-входа в фичу тренажера * ANDR-71: Добавлена реализация InterviewTrainerFeatureImpl. Внутри регистрация графа, обработка навигации назад и обработка навигации к экрану тренировки * ANDR-71: правки по ktlint'у * ANDR-71: ScreenMapper теперь класс * ANDR-71: Константы названий экранов интервью-тренажера * ANDR-71: Реворк навигации * ANDR-71: Улучшение экрана. Подключение вьюмодели и команд * ANDR-71: Вторичные Модули DI * ANDR-71: Вторичный маппер DI модуль * ANDR-71: Основной DI модуль экрана * ANDR-71: Подключение модуля тренажера во все приложение * ANDR-71: Подключение KOIN модуля * ANDR-71: Исправлен DI модуль для юзкейса * ANDR-71: Добавил экрану скролл * ANDR-71: Навигация с главного экрана на первый экран тренажера (CreateQuizScreen) * ANDR-71: Создание путей для экрана тренажера * ANDR-71: Убран хардкод путь экрана CreateQuiz * ANDR-71: Исправлен класс теста * ANDR-71: проставлен is * ANDR-71: добавлен строковой ресурс названия 1 экрана тренажера для прокидывания по навигации * ANDR-71: используем pathManager для навигации к экрану тренировки * ANDR-71: handleCommand приватная * ANDR-71: перегрузка метода получения состояния * ANDR-71: переименован юзкейс * ANDR-71: Рефактор DI. Все модули объединены в один * ANDR-71: коммент к DI * ANDR-71: Подключение Immutable Collections * ANDR-71: Удаление наружнего апи интерфейса * ANDR-71: Оптимизация навигации * ANDR-71: Навигация теперь принимает не строку, а число айди ресурса * ANDR-71: исправлены тесты * ANDR-71: В комментарии вставлены TODO() * ANDR-71: Обработка ошибок при запросе * ANDR-71: строковые ресурсы для contentDescription * ANDR-71: Изменение верстки экрана загрузки; добавление передаваемого параметра отступов * ANDR-71: небольшой рефактор основного экрана (Box вынесен внутрь экранов, контекст не передается, а создается внутри каждой @composable, убран хардкод contentDescription) * ANDR-71: добавлен дополнительный ресурс * ANDR-71: убрана зависимость от класса TextOrResource (чтоб избавиться от создания контекстов) * ANDR-71: убран ненужный пустой первичный конструктор * ANDR-71: Добавлен IO диспатчер на получения списка специализаций * ANDR-71: State теперь неизменяемый * ANDR-71: Обработка ошибок вынесена в маппер * ANDR-71: Новая верстка экрана загрузки * ANDR-71: Убрано получение стейта через делегат ради оптимизации рекомпозиций * Revert "ANDR-71: Обработка ошибок вынесена в маппер" This reverts commit 6fdea11. * ANDR-71: переменные mock переименованы в preview
#134) * ANDR-95-fix-text-field: добавил второй modifier для OutlinedTextField. Обновил шрифты и отступы согласно дизайну в фигме * ANDR-95-fix-text-field: добавилен параметр по умолчанию - readOnly: Boolean = false, и проброшен в остальные функции
…игация (#133) * ANDR-72: использование Parcelize для передачи между экранами * ANDR-72: дополнение навигации
* ANDR-94: Аннотация для динамического превью * ANDR-94: Подключение KOIN к core-ui * ANDR-94: Создание провайдер-функции для динамического превью и документации к ней * ANDR-94: Улучшение функции + убраны лишние комменты * ANDR-94: Мелкие правки динамик превью * ANDR-94: Создание примера * ANDR-94: Убрал старый пример динам. превью и также убрал ненужную надслойку-функцию * ANDR-94: Новый пример динам. превью * ANDR-94: Слегка обновил описание провайдер функции. Больше конкретики, что превью смотрит только один стейт
* skillButton refactor v1 * skillButton refactor v2 with preview * fix names * fix sizes * return contentPaddingDefault * delete contentPaddingDefault * small change * add interactionSource
* ANDR-64: Добавил в ViewModel метод mapToState, чтобы ловить данные с экрана Ивана через savedStateHandle. * ANDR-64: Перемещение файлов * ANDR-64: Перемеместил логику mapToState в ScreenMapper, добавил зависимость * ANDR-64: Правки ktlint * ANDR-64: изменил factory на single * ANDR-64: Добавил тесты
# Conflicts: # settings.gradle.kts
* ANDR-71: Добавление нужных текстов для entry-point'а * ANDR-71: Добавление сущности тренажера в бизнес логике главного экрана * ANDR-71: Добавление обработки команды по тренажеру * ANDR-71: Добавлена функция обработки навигации к тренажеру и передается в параметр главного экрана * ANDR-71: Тест Превью с кнопкой тренажера * ANDR-71: Использование лямбды навигации для отправки комманд * ANDR-71: Изменена внешняя функция навигации-входа в фичу тренажера * ANDR-71: Добавлена реализация InterviewTrainerFeatureImpl. Внутри регистрация графа, обработка навигации назад и обработка навигации к экрану тренировки * ANDR-71: правки по ktlint'у * ANDR-71: ScreenMapper теперь класс * ANDR-71: Константы названий экранов интервью-тренажера * ANDR-71: Реворк навигации * ANDR-71: Улучшение экрана. Подключение вьюмодели и команд * ANDR-71: Вторичные Модули DI * ANDR-71: Вторичный маппер DI модуль * ANDR-71: Основной DI модуль экрана * ANDR-71: Подключение модуля тренажера во все приложение * ANDR-71: Подключение KOIN модуля * ANDR-71: Исправлен DI модуль для юзкейса * ANDR-71: Добавил экрану скролл * ANDR-71: Навигация с главного экрана на первый экран тренажера (CreateQuizScreen) * ANDR-71: Создание путей для экрана тренажера * ANDR-71: Убран хардкод путь экрана CreateQuiz * ANDR-71: Исправлен класс теста * ANDR-71: проставлен is * ANDR-71: добавлен строковой ресурс названия 1 экрана тренажера для прокидывания по навигации * ANDR-71: используем pathManager для навигации к экрану тренировки * ANDR-71: handleCommand приватная * ANDR-71: перегрузка метода получения состояния * ANDR-71: переименован юзкейс * ANDR-71: Рефактор DI. Все модули объединены в один * ANDR-71: коммент к DI * ANDR-71: Подключение Immutable Collections * ANDR-71: Удаление наружнего апи интерфейса * ANDR-71: Оптимизация навигации * ANDR-71: Навигация теперь принимает не строку, а число айди ресурса * ANDR-71: исправлены тесты * ANDR-71: В комментарии вставлены TODO() * ANDR-71: Обработка ошибок при запросе * ANDR-71: строковые ресурсы для contentDescription * ANDR-71: Изменение верстки экрана загрузки; добавление передаваемого параметра отступов * ANDR-71: небольшой рефактор основного экрана (Box вынесен внутрь экранов, контекст не передается, а создается внутри каждой @composable, убран хардкод contentDescription) * ANDR-71: добавлен дополнительный ресурс * ANDR-71: убрана зависимость от класса TextOrResource (чтоб избавиться от создания контекстов) * ANDR-71: убран ненужный пустой первичный конструктор * ANDR-71: Добавлен IO диспатчер на получения списка специализаций * ANDR-71: State теперь неизменяемый * ANDR-71: Обработка ошибок вынесена в маппер * ANDR-71: Новая верстка экрана загрузки * ANDR-71: Убрано получение стейта через делегат ради оптимизации рекомпозиций * Revert "ANDR-71: Обработка ошибок вынесена в маппер" This reverts commit 6fdea11. * ANDR-71: переменные mock переименованы в preview * ANDR-71: убран titleId из навигации. Заголовок экрана теперь часть стейта * ANDR-71: Добавлены динамик превью, новая skillButton. Пофикшена плавающая кнопка изменения кол-ва вопросов
…игация + Интеграция (#150) * ANDR-72: настройка DI, исправление минорных ошибок, добавление QuizAnswersWrapperDto * ANDR-72: удаление лишней строки * ANDR-72: удаление лишнего импорта
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ANDR-104: Интеграция feature toggle в Interview Trainer
🧩 Что сделано:
🗂 Затронутые модули:
feature: interview-trainer (api, impl)
feature: example-home (impl)
🎯 Цель задачи:
Покрыть фичу Interview Trainer feature toggle: пользователь не может попасть в неё обходным путём, весь flow тренажёра закрывается одним флагом.