improve reply handling

This commit is contained in:
Henry Hiles 2026-03-10 19:22:41 -04:00
commit 0769ab4dbb
No known key found for this signature in database
4 changed files with 83 additions and 49 deletions

View file

@ -395,8 +395,7 @@ class RoomChat extends HookConsumerWidget {
message.metadata?["big"] == true
? TextStyle(fontSize: 32)
: null,
(message.metadata?["formatted"]
as String)
message.text
.replaceAllMapped(
RegExp(
"(<a\\b[^>]*>.*?<\\/a>)|(\\bhttps?:\\/\\/[^\\s<]+)",
@ -466,20 +465,29 @@ class RoomChat extends HookConsumerWidget {
: CrossAxisAlignment.start,
children: [
SizedBox(height: 12),
FlyerChatTextMessage(
topWidget: TopWidget(
message,
groupStatus: groupStatus,
alwaysShow: true,
if (message.text?.isNotEmpty == true)
FlyerChatTextMessage(
topWidget: TopWidget(
message,
groupStatus: groupStatus,
alwaysShow: true,
),
message: TextMessage(
id: "${message.id}-text",
authorId: message.authorId,
text: message.text!,
),
index: index,
),
message: TextMessage(
id: "${message.id}-text",
authorId: message.authorId,
text: message.metadata?["formatted"],
),
index: index,
),
FlyerChatImageMessage(
topWidget:
message.text?.isNotEmpty == true
? null
: TopWidget(
message,
groupStatus: groupStatus,
alwaysShow: true,
),
customImageProvider: CachedNetworkImage(
message.source,
ref.watch(

View file

@ -22,11 +22,13 @@ class TopWidget extends ConsumerWidget {
children: [
Builder(
builder: (_) {
final replyMessage = message.metadata?["reply"] as TextMessage?;
final replyMessage = message.metadata?["reply"] as Message?;
if (replyMessage == null) return SizedBox.shrink();
final smallerText = message is TextMessage
? replyMessage.text.substring(
final smallerText =
message is TextMessage && replyMessage.metadata!["body"] != null
? replyMessage.metadata!["body"].substring(
0,
min(
max(
@ -39,14 +41,14 @@ class TopWidget extends ConsumerWidget {
),
5,
),
replyMessage.text.length,
replyMessage.metadata!["body"].length,
),
)
: null;
final replyText =
(smallerText == null ||
smallerText.length == replyMessage.text.length)
? replyMessage.text
smallerText.length == replyMessage.metadata!["body"].length)
? replyMessage.metadata!["body"]
: "$smallerText...";
return Padding(