From 3e1b35b7cbe948da943d059e65b2a9215e78d388 Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Fri, 13 Mar 2026 13:43:00 -0400 Subject: [PATCH] change bubble layout wip --- lib/widgets/chat_page/room_chat.dart | 51 ++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/lib/widgets/chat_page/room_chat.dart b/lib/widgets/chat_page/room_chat.dart index 26ecfc3..97ce3d5 100644 --- a/lib/widgets/chat_page/room_chat.dart +++ b/lib/widgets/chat_page/room_chat.dart @@ -21,6 +21,7 @@ import "package:nexus/helpers/extensions/get_headers.dart"; import "package:nexus/helpers/extensions/show_context_menu.dart"; import "package:nexus/models/relation_type.dart"; import "package:nexus/models/requests/report_request.dart"; +import "package:nexus/widgets/avatar_or_hash.dart"; import "package:nexus/widgets/chat_page/chat_box.dart"; import "package:nexus/widgets/chat_page/html/html.dart"; import "package:nexus/widgets/chat_page/member_list.dart"; @@ -431,16 +432,46 @@ class RoomChat extends HookConsumerWidget { index, { required bool isSentByMe, MessageGroupStatus? groupStatus, - }) => FlyerChatTextMessage( - customWidget: getTextWidget(message), - topWidget: TopWidget( - message, - onTapReply: notifier.scrollToMessage, - groupStatus: groupStatus, - ), - message: message, - showTime: true, - index: index, + }) => Row( + spacing: 8, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + groupStatus?.isFirst != false + ? AvatarOrHash( + Uri.parse( + message.metadata?["avatarUrl"] ?? + "", + ), + height: 40, + message.metadata?["displayName"] ?? + "", + ) + : SizedBox(width: 40), + Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + if (groupStatus?.isFirst != false) + Text( + message.metadata?["displayName"] ?? + message.authorId, + overflow: TextOverflow.ellipsis, + style: Theme.of(context) + .textTheme + .titleMedium + ?.copyWith( + fontWeight: FontWeight.bold, + ), + ), + FlyerChatTextMessage( + customWidget: getTextWidget(message), + message: message, + showTime: true, + index: index, + ), + ], + ), + ], ), linkPreviewBuilder: (_, message, isSentByMe) => LinkPreview(