From 79806cc6a26e387dd7b7ddf8483b4d62521ba448 Mon Sep 17 00:00:00 2001 From: Connor Morgan Date: Sun, 24 Nov 2024 22:17:17 -0600 Subject: [PATCH] feat: Add search functionality for nodes in Messages and Nodes pages --- src/pages/Messages.tsx | 18 +++++++++++++++--- src/pages/Nodes.tsx | 19 ++++++++++++++++--- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/pages/Messages.tsx b/src/pages/Messages.tsx index 28a35d2c..e5d87bc8 100644 --- a/src/pages/Messages.tsx +++ b/src/pages/Messages.tsx @@ -20,9 +20,12 @@ export const MessagesPage = (): JSX.Element => { const [activeChat, setActiveChat] = useState( Types.ChannelNumber.Primary, ); - const filteredNodes = Array.from(nodes.values()).filter( - (n) => n.num !== hardware.myNodeNum, - ); + const [searchTerm, setSearchTerm] = useState(""); + const filteredNodes = Array.from(nodes.values()).filter((node) => { + if (node.num === hardware.myNodeNum) return false; + const nodeName = node.user?.longName ?? `!${numberToHexUnpadded(node.num)}`; + return nodeName.toLowerCase().includes(searchTerm.toLowerCase()); + }); const allChannels = Array.from(channels.values()); const filteredChannels = allChannels.filter( (ch) => ch.role !== Protobuf.Channel.Channel_Role.DISABLED, @@ -56,6 +59,15 @@ export const MessagesPage = (): JSX.Element => { ))} +
+ setSearchTerm(e.target.value)} + className="w-full p-2 border border-gray-300 rounded bg-white text-black" + /> +
{filteredNodes.map((node) => ( { const { nodes, hardware, setDialogOpen } = useDevice(); const { setNodeNumToBeRemoved } = useAppStore(); + const [searchTerm, setSearchTerm] = useState(""); - const filteredNodes = Array.from(nodes.values()).filter( - (n) => n.num !== hardware.myNodeNum, - ); + const filteredNodes = Array.from(nodes.values()).filter((node) => { + if (node.num === hardware.myNodeNum) return false; + const nodeName = node.user?.longName ?? `!${numberToHexUnpadded(node.num)}`; + return nodeName.toLowerCase().includes(searchTerm.toLowerCase()); + }); return ( <>
+
+ setSearchTerm(e.target.value)} + className="w-full p-2 border border-gray-300 rounded bg-white text-black" + /> +