You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

3.1 KiB

Ссылки в сообщениях

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-сборки:

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