From 1715ee785eb3479453ccf934d599efe02b28ad3a Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Wed, 21 Oct 2026 23:01:22 -0400 Subject: [PATCH] make names in typing indicators clickable --- lib/widgets/composer/typing_indicator.dart | 37 ++++++++++++++-------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/lib/widgets/composer/typing_indicator.dart b/lib/widgets/composer/typing_indicator.dart index fa64f60..2a30c4b 100644 --- a/lib/widgets/composer/typing_indicator.dart +++ b/lib/widgets/composer/typing_indicator.dart @@ -4,6 +4,7 @@ import "package:material_ui/material_ui.dart"; import "package:nexus/controllers/room_typing.dart"; import "package:nexus/controllers/user.dart"; import "package:nexus/helpers/extensions/get_localpart.dart"; +import "package:nexus/helpers/extensions/show_user_popover.dart"; import "package:nexus/widgets/bouncing_dots.dart"; class const TypingIndicator(final String roomId, {super.key}) @@ -19,20 +20,28 @@ class const TypingIndicator(final String roomId, {super.key}) ...typing .take(named) .map( - (typingUserId) => TextSpan( - text: - ref - .watch( - UserController.provider( - .new(roomId: roomId, userId: typingUserId), - ), - ) - .value - ?.displayName ?? - typingUserId.localpart, - style: TextStyle( - fontWeight: .bold, - color: theme.colorScheme.onSurface, + (typingUserId) => WidgetSpan( + alignment: .baseline, + baseline: .alphabetic, + child: Builder( + builder: (context) => InkWell( + onTap: () => + context.showUserPopover(typingUserId, roomId: roomId), + child: Text( + ref + .watch( + UserController.provider( + .new(roomId: roomId, userId: typingUserId), + ), + ) + .value + ?.displayName ?? + typingUserId.localpart, + style: theme.textTheme.bodyMedium?.copyWith( + fontWeight: .bold, + ), + ), + ), ), ), ),