Данный документ описывает логику и сценарий работы по управлению группами.
Для создания группы необходимо отправить следующий фрейм [new group
](/socket.io/client-emited/group/new group.md).
В пользовательском интерфесе получение необходимых данных для создания группы происходит в два этапа.
- После нажати на иконку создания группы открывается следующий экран:
На этом экране опционально можно установить аватар будущей группы. Обязательно необходимо указать название будущей группы. После нажатия на кнопку далее переход на следующий экран. - Экран выбора участников группы:
На это экране задается список участников группы. После нажатия кнопки далее создается новая группа [new group
](/socket.io/client-emited/group/new group.md). Далее необходимо создать первый диалог. В новый диалог необходимо добавить сообщение с разным текстом для создавшего группу и для остальных участников. Сообщения:
- Администратор: 'Создана новая группа. Этот диалог создан автоматически.'
- Остальные участники: 'Вы добавлены в новую группу. Это самое начало переписки.'
Для просмотра информации о группе необходимо перейти в карточку группы, тапнув на заголовок на экране с перепиской.
Вид карточки для администратора группы:
- Основной экран
- Редактирование названия
- Просмотр аватара
- Меню управления аватаром
- Меню участника группы
Вид карточки для остальных участников
Редактирование группы происходит из карточки группы.
- Изменение аватара
[
change avatar
](/socket.io/client-emited/group/change avatar.md) - Изменение названия группы | добавление участников | исключение участников
[
edit group
](/socket.io/client-emited/group/edit group.md).
При изменении группы стоит обратить внимание на следующее:
- Перешифрование имен диалогов. При изменении числа участнико группы необходимо обновить набор Bodies для каждого диалога в группе, чтобы сохранить согласованность данных и чтобы каждый из участников смог расшифровать названия диалогов.
- Отметка о прочтении сообщений. Каждое создаваемое сервисное сообщение дублируется в каждый диалог в группе. Необходимо сделать так, чтобы непрочитанными были сообщения, отправляемые только в диалог с самой свежей перепиской. Для этого у каждого создаваемого сервисного сообщения предусмотрено поле
as_read
. Для администратора группы все сообщения автоматически отмечаются как прочтенные. Для остальных собеседников необходимо установитьas_read = true
для всех диалогов, кроме самого свежего. Чтобы получить самый свежий диалог, нужно определить в каком из диалогов в группе находится сообщение с самой новой датой.