feat(chat): disallow links in messages

Local-first chat between people whose web of trust is still forming is a
natural phishing/scam vector, so messages may not contain URLs. A
conservative `containsUrl` rule (explicit scheme, www., or a common-TLD
domain — but not "3.5kg" or "12.30") gates it: the composer warns and
keeps the text for editing, and MessagesCubit.send drops any URL as a
backstop. Incoming text was already non-tappable (plain selectable text).
This commit is contained in:
vjrj 2026-07-11 07:14:58 +02:00
parent 6a6a81e8a2
commit 1ab243f29e
14 changed files with 107 additions and 34 deletions

View file

@ -774,6 +774,7 @@ class _Translations$chat$es extends Translations$chat$en {
@override String get today => 'Hoy';
@override String get yesterday => 'Ayer';
@override String get sendError => 'No se pudo enviar — revisa tu conexión';
@override String get noLinks => 'No se permiten enlaces en los mensajes';
}
// Path: trust
@ -1628,6 +1629,7 @@ extension on TranslationsEs {
'chat.today' => 'Hoy',
'chat.yesterday' => 'Ayer',
'chat.sendError' => 'No se pudo enviar — revisa tu conexión',
'chat.noLinks' => 'No se permiten enlaces en los mensajes',
'trust.none' => 'Nadie los avala aún',
'trust.count' => ({required Object n}) => 'Avalada por ${n}',
'trust.vouch' => 'Conozco a esta persona',