2 changed files with 49 additions and 0 deletions
@ -0,0 +1,36 @@
|
||||
# Ссылки в сообщениях |
||||
|
||||
Android и Qt распознают `http://`, `https://` и `utun://` в обычном тексте |
||||
личных и групповых сообщений. HTTP/HTTPS нечувствительны к регистру схемы. |
||||
Ссылки выделяются цветом и подчёркиванием; длинные веб-адреса переносятся по ширине. |
||||
Сокращённая строка структурированного PM-приглашения сохраняет полный `utun://` адрес. |
||||
|
||||
Пробелы, управляющие символы, кавычки и угловые скобки отделяют ссылку от текста. |
||||
Конечные `. , ; : ! ?` и лишние закрывающие скобки удаляются из распознанного адреса. |
||||
Сбалансированные скобки в адресе, параметры, fragment и Unicode сохраняются. |
||||
Адреса без схемы не распознаются. Некорректные веб-адреса остаются обычным текстом. |
||||
Исходное сообщение в БД и протоколе не меняется. |
||||
|
||||
Разборщики возвращают диапазоны UTF-16 и полные адреса: |
||||
`tools/chatgui/src/message_links.cpp`, Android `data/MessageLinks.kt`. |
||||
Подсветка и нажатие используют эти диапазоны. Android подставляет emoji placeholders |
||||
только в обычный текст между ссылками: emoji внутри адреса остаётся частью полного URL. |
||||
Qt использует один QTextLayout для размеров, отрисовки, выделения и координат нажатия. |
||||
Перетаскивание выделяет текст без открытия ссылки. |
||||
|
||||
HTTP/HTTPS открываются из GUI системным обработчиком: Android `ACTION_VIEW`, |
||||
Qt `QDesktopServices::openUrl`. `utun://` запускает существующий JOIN. |
||||
Ошибки открытия показываются через перевод интерфейса и логируются. |
||||
Диагностика открытия содержит схему и host, без полного пути/query. |
||||
|
||||
Общие случаи: `tools/chatgui/tests/message_links_cases.tsv`. |
||||
Qt `test_invite_links` проверяет разбор, перенесённые веб-ссылки, смесь схем, |
||||
нажатие, drag/copy и сокращённые приглашения; `test_emoji_playback` — жесты приглашений. |
||||
Android `tests/test_message_links.kt` проверяет тот же TSV на классах из APK-сборки: |
||||
|
||||
```bash |
||||
cd tools/chatgui-android |
||||
./build.sh noinstall |
||||
kotlinc tests/test_message_links.kt -classpath app/build/tmp/kotlin-classes/debug -d /tmp/message-links-tests.jar |
||||
kotlin -classpath /tmp/message-links-tests.jar:app/build/tmp/kotlin-classes/debug Test_message_linksKt ../chatgui/tests/message_links_cases.tsv |
||||
``` |
||||
Loading…
Reference in new issue