From a7e8ec78edee32700fb2c2c0663d4f2c892ed622 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Sat, 20 Jan 2024 08:49:57 +0100 Subject: [PATCH] feat: Join room by alias by tpying alias in searchbar --- lib/pages/chat_list/chat_list.dart | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index bec082c3b..e86783300 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -214,12 +214,34 @@ class ChatListController extends State } SearchUserDirectoryResponse? userSearchResult; QueryPublicRoomsResponse? roomSearchResult; + final searchQuery = searchController.text.trim(); try { roomSearchResult = await client.queryPublicRooms( server: searchServer, - filter: PublicRoomQueryFilter(genericSearchTerm: searchController.text), + filter: PublicRoomQueryFilter(genericSearchTerm: searchQuery), limit: 20, ); + + if (searchQuery.isValidMatrixId && + searchQuery.sigil == '#' && + roomSearchResult.chunk + .any((room) => room.canonicalAlias == searchQuery) == + false) { + final response = await client.getRoomIdByAlias(searchQuery); + final roomId = response.roomId; + if (roomId != null) { + roomSearchResult.chunk.add( + PublicRoomsChunk( + name: searchQuery, + guestCanJoin: false, + numJoinedMembers: 0, + roomId: roomId, + worldReadable: false, + canonicalAlias: searchQuery, + ), + ); + } + } userSearchResult = await client.searchUserDirectory( searchController.text, limit: 20,