|
|
|
|
@ -5,7 +5,11 @@
|
|
|
|
|
и выбором группы, в которой отправитель состоит. Группа не выбирается автоматически. |
|
|
|
|
|
|
|
|
|
После нажатия «Пригласить» клиент создаёт свежую ссылку через `invite_build`, |
|
|
|
|
ожидает подтверждения регистрации ключа и отправляет ссылку обычным текстовым PM. |
|
|
|
|
ожидает подтверждения регистрации ключа и отправляет PM с `ct="invite"`. |
|
|
|
|
Зашифрованное тело: `[group_name:UTF8][NUL][полная ссылка:UTF8]`, без конечного NUL. |
|
|
|
|
Снимок для GUI содержит полную ссылку в `data` и название в `tags.group_name`. |
|
|
|
|
GUI добавляет заголовок «Приглашение в группу «название»» из перевода интерфейса; |
|
|
|
|
язык отправителя не фиксирует язык сообщения у получателя. |
|
|
|
|
Успех означает сохранение сообщения и исходящей задачи в одной транзакции. |
|
|
|
|
Доставку, повтор и шифрование обеспечивает существующий механизм DM. |
|
|
|
|
После успешной отправки открывается личная беседа с получателем. |
|
|
|
|
@ -17,8 +21,11 @@
|
|
|
|
|
без обратного отсчёта и вычисления оставшегося времени. |
|
|
|
|
|
|
|
|
|
Нажатие на `utun://` в сообщении запускает существующий JOIN и показывает его результат. |
|
|
|
|
Если клиент уже состоит в группе, открывается эта группа. Перенос длинной ссылки |
|
|
|
|
не меняет её содержимое; на desktop перетаскивание выделяет текст без запуска JOIN. |
|
|
|
|
Если клиент уже состоит в группе, открывается эта группа. Ссылка приглашения отображается |
|
|
|
|
одной строкой с многоточием; нажатие и копирование используют полный адрес. |
|
|
|
|
В Android долгое нажатие копирует ссылку, в desktop выделение сокращённой строки |
|
|
|
|
копирует ссылку целиком без запуска JOIN. Обычные текстовые PM с вручную |
|
|
|
|
вставленными ссылками сохраняют текстовое отображение. |
|
|
|
|
|
|
|
|
|
## Контракт операции |
|
|
|
|
|
|
|
|
|
@ -44,10 +51,12 @@ JOIN во вторую группу может использовать уже
|
|
|
|
|
|
|
|
|
|
- `tests/test_dm_invite`: настоящая UDP-доставка ссылки в другую группу, JOIN, |
|
|
|
|
репликация участника и отправка группового сообщения после вступления; |
|
|
|
|
отмена, BUSY, неверная группа, rollback при ошибке commit и остановка DM. |
|
|
|
|
отмена, BUSY, неверная группа, rollback при ошибке commit и остановка DM; |
|
|
|
|
передача названия с Unicode, кавычками и переводом строки. |
|
|
|
|
- `tests/test_chat_join`, `tests/test_chat_join_e2e`, `tests/test_dm_e2e`: |
|
|
|
|
существующие сценарии регистрации ключей, JOIN и PM-доставки. |
|
|
|
|
- Qt `test_invite_links`: переносы двух ссылок, их полное содержимое при нажатии, |
|
|
|
|
- Qt `test_invite_links`: одна строка приглашения на разных ширинах, полный адрес |
|
|
|
|
при нажатии и копировании, переносы двух обычных ссылок, их полное содержимое при нажатии, |
|
|
|
|
выделение текста и выбор получателя кнопкой в строке участника. |
|
|
|
|
- Qt `test_emoji_playback`: перетаскивание ссылки не активирует подключение. |
|
|
|
|
|
|
|
|
|
|