Implement community creation with NgRx
Что сделано
Создание сообщества
- Добавлено модальное окно с реактивной формой создания сообщества.
- В форме используются кастомные контролы:
- текстовое поле для названия;
- select для выбора темы;
- stack-input для тегов;
- Для обязательного поля названия добавлены:
- индикатор
*; - проверка
required; - сообщение об ошибке после взаимодействия с полем или отправки формы.
- индикатор
NgRx и работа с API
- Добавлены actions для создания сообщества, успешного ответа, ошибки и очистки предыдущей ошибки.
- Реализован эффект отправки
POST /community/. - Добавлены состояния:
-
creating; -
createError.
-
- Во время выполнения запроса кнопка сохранения блокируется.
- При ошибке модальное окно остаётся открытым, введённые данные сохраняются и выводится сообщение.
- После успешного создания модальное окно закрывается через отдельный UI-effect.
- После создания заново загружается первая страница списка с текущими фильтрами, чтобы актуализировать
total,pagesи состав списка. - При загрузке первой страницы предыдущее содержимое списка и параметры пагинации сбрасываются.
Подписка на сообщества
- Для запросов подписки и отписки используется
mergeMap, чтобы параллельные действия не отменяли друг друга. - Кнопка подписки скрывается для сообщества, администратором которого является текущий пользователь.
Проверка
- Проверено открытие и закрытие модального окна.
- Проверено успешное создание сообщества с ответом
201. - Проверено закрытие модального окна после успешного создания.
- Проверено обновление списка после создания.
- Проверена обработка ошибки сервера:
- модальное окно остаётся открытым;
- кнопка снова становится доступной;
- отображается сообщение об ошибке;