From bcc4d4d204b744bf9da554f1830926343c21495d Mon Sep 17 00:00:00 2001 From: Halil Kaskavalci <1646238+kaskavalci@users.noreply.github.com> Date: Fri, 10 Apr 2026 21:51:37 +0200 Subject: [PATCH] feat(chat): make messagePreviewMaxLines configurable, with default 128 --- config.sample.json | 1 + lib/config/setting_keys.dart | 3 +++ lib/pages/chat/events/html_message.dart | 9 +++++++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/config.sample.json b/config.sample.json index a1ea6f6f..ebc126e8 100644 --- a/config.sample.json +++ b/config.sample.json @@ -12,6 +12,7 @@ "audioRecordingSamplingRate": 44100, "renderHtml": true, "fontSizeFactor": 1, + "messagePreviewMaxLines": 128, "hideRedactedEvents": false, "hideUnknownEvents": true, "separateChatTypes": false, diff --git a/lib/config/setting_keys.dart b/lib/config/setting_keys.dart index 1b489241..4e7cc96f 100644 --- a/lib/config/setting_keys.dart +++ b/lib/config/setting_keys.dart @@ -9,6 +9,9 @@ import 'package:shared_preferences/shared_preferences.dart'; enum AppSettings { textMessageMaxLength('textMessageMaxLength', 16384), + + /// Max lines for unselected HTML/text bubbles; 0 = unlimited (no fade). + messagePreviewMaxLines('chat.fluffy.message_preview_max_lines', 128), audioRecordingNumChannels('audioRecordingNumChannels', 1), audioRecordingAutoGain('audioRecordingAutoGain', true), audioRecordingEchoCancel('audioRecordingEchoCancel', false), diff --git a/lib/pages/chat/events/html_message.dart b/lib/pages/chat/events/html_message.dart index e4ded6f1..b30ac2f5 100644 --- a/lib/pages/chat/events/html_message.dart +++ b/lib/pages/chat/events/html_message.dart @@ -1,4 +1,5 @@ import 'package:collection/collection.dart'; +import 'package:fluffychat/config/setting_keys.dart'; import 'package:fluffychat/utils/code_highlight_theme.dart'; import 'package:fluffychat/utils/event_checkbox_extension.dart'; import 'package:fluffychat/widgets/avatar.dart'; @@ -509,11 +510,15 @@ class HtmlMessage extends StatelessWidget { @override Widget build(BuildContext context) { final element = parser.parse(html).body ?? dom.Element.html(''); + final configuredMaxLines = AppSettings.messagePreviewMaxLines.value; + final maxLines = !limitHeight || configuredMaxLines <= 0 + ? null + : configuredMaxLines; return Text.rich( _renderHtml(element, context), style: TextStyle(fontSize: fontSize, color: textColor), - maxLines: limitHeight ? 64 : null, - overflow: TextOverflow.fade, + maxLines: maxLines, + overflow: maxLines == null ? TextOverflow.visible : TextOverflow.fade, selectionColor: textColor.withAlpha(128), ); }