From 612afc2fe82f90abb5b6cfc0e524c4606d587a90 Mon Sep 17 00:00:00 2001 From: ericz Date: Thu, 12 Mar 2026 09:14:39 +0100 Subject: [PATCH] still use limitter but fix sending check on compressed text --- lib/screens/channel_chat_screen.dart | 11 +++++++++-- lib/screens/chat_screen.dart | 6 +++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/screens/channel_chat_screen.dart b/lib/screens/channel_chat_screen.dart index 16308b0..ecacf49 100644 --- a/lib/screens/channel_chat_screen.dart +++ b/lib/screens/channel_chat_screen.dart @@ -1243,14 +1243,21 @@ class _ChannelChatScreenState extends State { } final maxBytes = maxChannelMessageBytes(connector.selfName); - if (utf8.encode(messageText).length > maxBytes) { + final smazEnabled = connector.isChannelSmazEnabled(widget.channel.index); + final trimmed = messageText.trim(); + final isStructuredPayload = + trimmed.startsWith('g:') || trimmed.startsWith('m:'); + final outboundText = (smazEnabled && !isStructuredPayload) + ? Smaz.encodeIfSmaller(messageText) + : messageText; + if (utf8.encode(outboundText).length > maxBytes) { ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text(context.l10n.chat_messageTooLong(maxBytes))), ); return; } - connector.sendChannelMessage(widget.channel, messageText); + connector.sendChannelMessage(widget.channel, outboundText); _textController.clear(); _cancelReply(); _textFieldFocusNode.requestFocus(); diff --git a/lib/screens/chat_screen.dart b/lib/screens/chat_screen.dart index 8f002b3..a40e354 100644 --- a/lib/screens/chat_screen.dart +++ b/lib/screens/chat_screen.dart @@ -597,7 +597,11 @@ class _ChatScreenState extends State { if (text.isEmpty) return; final maxBytes = maxContactMessageBytes(); - if (utf8.encode(text).length > maxBytes) { + final outboundText = connector.prepareContactOutboundText( + widget.contact, + text, + ); + if (utf8.encode(outboundText).length > maxBytes) { ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text(context.l10n.chat_messageTooLong(maxBytes))), );