From ac2a361b77387c9f11cf2e8dd6ddb0880802935b Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Thu, 4 Dec 2025 08:53:11 +0100 Subject: [PATCH] Can filter rooms list --- .../src/widgets/messages/RoomSelector.tsx | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/matrixgw_frontend/src/widgets/messages/RoomSelector.tsx b/matrixgw_frontend/src/widgets/messages/RoomSelector.tsx index 258402e..bd790ca 100644 --- a/matrixgw_frontend/src/widgets/messages/RoomSelector.tsx +++ b/matrixgw_frontend/src/widgets/messages/RoomSelector.tsx @@ -1,3 +1,4 @@ +import SearchIcon from "@mui/icons-material/Search"; import { Chip, List, @@ -5,6 +6,7 @@ import { ListItemButton, ListItemIcon, ListItemText, + TextField, } from "@mui/material"; import React from "react"; import type { UsersMap } from "../../api/matrix/MatrixApiProfile"; @@ -22,11 +24,17 @@ export function RoomSelector(p: { }): React.ReactElement { const user = useUserInfo(); + const [filter, setFilter] = React.useState(""); const [unread, setUnread] = React.useState(false); const shownRooms = React.useMemo( - () => p.rooms.filter((r) => !unread || r.number_unread_messages > 0), - [p.rooms, unread] + () => + p.rooms + .filter((r) => !unread || r.number_unread_messages > 0) + .filter((r) => + r.name?.toLocaleLowerCase()?.includes(filter.toLocaleLowerCase()) + ), + [p.rooms, unread, filter] ); if (p.rooms.length === 0) @@ -45,6 +53,19 @@ export function RoomSelector(p: { return (
+ {/** Filter bar */} + , + }, + }} + style={{ margin: "5px" }} + value={filter} + onChange={(e) => setFilter(e.target.value)} + /> + {/** Chip bar */}
setUnread(!unread)} style={{ cursor: "pointer" }}>