diff --git a/lib/widgets/event_preview.dart b/lib/widgets/event_preview.dart index 9bd3392..d15c8ab 100644 --- a/lib/widgets/event_preview.dart +++ b/lib/widgets/event_preview.dart @@ -18,17 +18,20 @@ class const EventPreview(final Event event, {super.key}) if (event.content is MessageContent) MessageAvatar(event), Flexible( - child: Wrap( + child: Row( crossAxisAlignment: .center, + mainAxisSize: .min, spacing: 8, - runSpacing: 2, children: [ - if (event.content is MessageContent) MessageDisplayname(event), - EventRenderer( - event.rowId, - roomId: event.roomId, - textOnly: true, - maxLines: 1, + if (event.content is MessageContent) + Flexible(child: MessageDisplayname(event)), + Flexible( + child: EventRenderer( + event.rowId, + roomId: event.roomId, + textOnly: true, + maxLines: 1, + ), ), ], ), diff --git a/lib/widgets/loading.dart b/lib/widgets/loading.dart index 180cd1b..e92860e 100644 --- a/lib/widgets/loading.dart +++ b/lib/widgets/loading.dart @@ -1,11 +1,15 @@ import "package:material_ui/material_ui.dart"; -class const Loading({super.key, final double? height}) extends StatelessWidget { +class const Loading({super.key, final double? dimension}) + extends StatelessWidget { @override Widget build(BuildContext context) => Center( child: Padding( padding: .all(16), - child: SizedBox(height: height, child: CircularProgressIndicator()), + child: SizedBox.square( + dimension: dimension, + child: CircularProgressIndicator(), + ), ), ); } diff --git a/lib/widgets/renderers/message.dart b/lib/widgets/renderers/message.dart index 43c0c2a..b2dda31 100644 --- a/lib/widgets/renderers/message.dart +++ b/lib/widgets/renderers/message.dart @@ -13,6 +13,7 @@ import "package:nexus/widgets/html/html.dart"; import "package:nexus/widgets/lazy_loading/message_avatar.dart"; import "package:nexus/widgets/lazy_loading/message_displayname.dart"; import "package:nexus/widgets/linkified_text.dart"; +import "package:nexus/widgets/loading.dart"; import "package:nexus/widgets/message_image.dart"; import "package:nexus/widgets/reaction_row.dart"; import "package:nexus/widgets/timestamp.dart"; @@ -197,24 +198,32 @@ class const MessageRenderer( onTap: onTapReply, child: Padding( padding: .symmetric(vertical: 8, horizontal: 12), - child: switch (ref.watch( - EventController.provider( - .new( - roomId: event.roomId, - eventId: event.replyTo!, - ), + child: SizedBox( + height: 32, + child: OverflowBox( + alignment: .centerLeft, + minHeight: 0, + maxHeight: .infinity, + child: switch (ref.watch( + EventController.provider( + .new( + roomId: event.roomId, + eventId: event.replyTo!, + ), + ), + )) { + AsyncData(:final value?) || + AsyncLoading( + :final value?, + ) => EventPreview(value), + AsyncError _ => Text( + "An error occurred while fetching the reply", + style: errorStyle, + ), + _ => Loading(dimension: 12), + }, ), - )) { - AsyncData(:final value?) || - AsyncLoading( - :final value?, - ) => EventPreview(value), - AsyncError _ => Text( - "An error occurred while fetching the reply", - style: errorStyle, - ), - _ => Text("Fetching event..."), - }, + ), ), ), ),