ANDR-51 Завершение работы над регистрацией#154
Conversation
…льных настроек IDE. Закомментированы вызовы удаленных UI-компонентов для обеспечения успешной сборки
…oading для отображения индикатора загрузки и автоматической блокировки кнопок
…н POST-метод для регистрации и иконка профиля для нижней навигации
…оен маппинг ответов бэкенда с учетом специфичных кодов (404, 409) и ключей сообщений
…wModel, комплексная валидация полей на основе доменных правил и маппинг состояний экрана
…троена навигация, регистрация экрана в NavigationFactory и подключение DI-модулей.
…икации логики регистрации.
There was a problem hiding this comment.
Кто-то коммитил это до меня, а гиигнор игнорирует это правило теперь. Поэтому я удалил это
| is RegistrationAction.EmailChanged -> form.copy(email = action.value) | ||
| is RegistrationAction.PasswordChanged -> form.copy(password = action.value) | ||
| is RegistrationAction.ConfirmPasswordChanged -> form.copy(confirmPassword = action.value) | ||
| else -> form |
There was a problem hiding this comment.
Убрать else, чтобы был полный перебор. Если у тебя остается много веток одинаковых, то
is first,
is second,
-> form
| } | ||
|
|
||
| @Test | ||
| fun `mapToInitialState returns correct initial state`() { |
There was a problem hiding this comment.
У нас не так пишутся тесты, 1 функция и параметры прокидываются в нее через @ParametrizedTest
There was a problem hiding this comment.
Маппер сложный, тут одной функцией на все тяжело обойтись. Я сделал как в других модулян, но сократил на 3 функции
- все экшены
- логика валидации
- маппинг ошибок
There was a problem hiding this comment.
Гоу все равно переделаем, чтобы не отличаться. Тест не сложный, у нас тесты по 2к строк)
Ты же параметризированными параметрами эти тесты и покрываешь.
…на проекте. Обновление самого маппера. Теперь все события обрабатываются без else
| } | ||
|
|
||
| @Test | ||
| fun `mapToInitialState returns correct initial state`() { |
There was a problem hiding this comment.
Гоу все равно переделаем, чтобы не отличаться. Тест не сложный, у нас тесты по 2к строк)
Ты же параметризированными параметрами эти тесты и покрываешь.
Что сделано:
- Реализован экран регистрации (RegistrationScreen) с валидацией полей (Email, пароль, подтверждение пароля) и чекбоксами согласий (ПД, Оферта, рассылка)
- Добавлена логика во ViewModel и UiStateMapper для управления состояниями экрана регистрации (Loading, Error, Success)
- Реализован репозиторий и сетевой слой взаимодействия с API для регистрации (auth/signUp), настроена обработка ошибок бэкенда (409 Conflict, 404 Not Found)
- В базовый компонент PrimaryButton (:core:ui) добавлена поддержка состояния загрузки (isLoading) с отображением ProgressBar
- Интегрирована иконка профиля и обновлена конфигурация нижней навигации
- Фича регистрации подключена через FeatureApi, зарегистрирована в навигации и настроена DI-зависимость через Koin
- Полностью удален неиспользуемый устаревший модуль :feature:forgot-password и очищены все его зависимости в settings.gradle.kts и app/build.gradle.kts для успешной сборки проекта (взамен создается новый модуль восстановления)
- Изменен цвет границ неактивных чекбоксов со светло-фиолетового на нейтрально-серый
- Блок согласий сгруппирован плотнее в отдельный Column со spacedBy(8.dp)