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(":")