From 4ab180c2112a1dd98374acc34173a62cc5910c4a Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Fri, 30 Jan 2026 11:25:02 +0100 Subject: [PATCH 1/2] Working mentions --- lib/controllers/room_chat_controller.dart | 15 ++++++++++----- lib/widgets/chat_page/mention_overlay.dart | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/controllers/room_chat_controller.dart b/lib/controllers/room_chat_controller.dart index 8977953..fa1bb86 100644 --- a/lib/controllers/room_chat_controller.dart +++ b/lib/controllers/room_chat_controller.dart @@ -86,7 +86,8 @@ class RoomChatController extends AsyncNotifier { await client.getRoomState( GetRoomStateRequest( roomId: roomId, - fetchMembers: room.metadata?.hasMemberList == false, + fetchMembers: true, + includeMembers: false, ), ); @@ -182,9 +183,7 @@ class RoomChatController extends AsyncNotifier { taggedMessage = taggedMessage.replaceAllMapped( pattern, - (match) => match.group( - 1, - )!, // TODO: Return an HTML or Markdown link from here, not plaintext + (match) => match.group(1)!, ); } @@ -192,7 +191,13 @@ class RoomChatController extends AsyncNotifier { client.sendMessage( SendMessageRequest( roomId: roomId, - mentions: Mentions(), // TODO: Add parsed mentions + mentions: Mentions( + userIds: [ + if (relation != null && relationType == RelationType.reply) + relation.authorId, + ].toIList(), + room: taggedMessage.contains("@room"), + ), // TODO: Add parsed mentions text: taggedMessage, relation: relation == null ? null diff --git a/lib/widgets/chat_page/mention_overlay.dart b/lib/widgets/chat_page/mention_overlay.dart index 116bc54..7ea9109 100644 --- a/lib/widgets/chat_page/mention_overlay.dart +++ b/lib/widgets/chat_page/mention_overlay.dart @@ -71,7 +71,7 @@ class MentionOverlay extends ConsumerWidget { member.authorId, ), onTap: () => addTag( - id: member.authorId, + id: "[@${member.content["displayname"]}](https://matrix.to/#/${member.authorId})", name: member.authorId .substring(1) .split(":") From 8946353228a7e4a3c43d5691d3874ac621152b76 Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Fri, 30 Jan 2026 11:25:02 +0100 Subject: [PATCH 2/2] Working mentions --- lib/controllers/room_chat_controller.dart | 15 ++++++++++----- lib/widgets/chat_page/mention_overlay.dart | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/controllers/room_chat_controller.dart b/lib/controllers/room_chat_controller.dart index 8977953..cd0ffda 100644 --- a/lib/controllers/room_chat_controller.dart +++ b/lib/controllers/room_chat_controller.dart @@ -86,7 +86,8 @@ class RoomChatController extends AsyncNotifier { await client.getRoomState( GetRoomStateRequest( roomId: roomId, - fetchMembers: room.metadata?.hasMemberList == false, + fetchMembers: true, + includeMembers: false, ), ); @@ -182,9 +183,7 @@ class RoomChatController extends AsyncNotifier { taggedMessage = taggedMessage.replaceAllMapped( pattern, - (match) => match.group( - 1, - )!, // TODO: Return an HTML or Markdown link from here, not plaintext + (match) => match.group(1)!, ); } @@ -192,7 +191,13 @@ class RoomChatController extends AsyncNotifier { client.sendMessage( SendMessageRequest( roomId: roomId, - mentions: Mentions(), // TODO: Add parsed mentions + mentions: Mentions( + userIds: [ + if (relation != null && relationType == RelationType.reply) + relation.authorId, + ].toIList(), + room: taggedMessage.contains("@room"), + ), text: taggedMessage, relation: relation == null ? null diff --git a/lib/widgets/chat_page/mention_overlay.dart b/lib/widgets/chat_page/mention_overlay.dart index 116bc54..7ea9109 100644 --- a/lib/widgets/chat_page/mention_overlay.dart +++ b/lib/widgets/chat_page/mention_overlay.dart @@ -71,7 +71,7 @@ class MentionOverlay extends ConsumerWidget { member.authorId, ), onTap: () => addTag( - id: member.authorId, + id: "[@${member.content["displayname"]}](https://matrix.to/#/${member.authorId})", name: member.authorId .substring(1) .split(":")