import { useAppStore } from "@app/core/stores/appStore"; import { ChannelChat } from "@components/PageComponents/Messages/ChannelChat.tsx"; import { PageLayout } from "@components/PageLayout.tsx"; import { Sidebar } from "@components/Sidebar.tsx"; import { Avatar } from "@components/UI/Avatar.tsx"; import { SidebarSection } from "@components/UI/Sidebar/SidebarSection.tsx"; import { SidebarButton } from "@components/UI/Sidebar/sidebarButton.tsx"; import { useToast } from "@core/hooks/useToast.ts"; import { useDevice } from "@core/stores/deviceStore.ts"; import { Protobuf, Types } from "@meshtastic/core"; import { numberToHexUnpadded } from "@noble/curves/abstract/utils"; import { getChannelName } from "@pages/Channels.tsx"; import { HashIcon, LockIcon, LockOpenIcon, WaypointsIcon } from "lucide-react"; import { useState } from "react"; export const MessagesPage = () => { const { channels, nodes, hardware, messages, traceroutes, connection } = useDevice(); const { activeChat, chatType, setActiveChat, setChatType } = useAppStore(); 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, ); const currentChannel = channels.get(activeChat); const { toast } = useToast(); const node = nodes.get(activeChat); const nodeHex = node?.num ? numberToHexUnpadded(node.num) : "Unknown"; return ( <> {filteredChannels.map((channel) => ( { setChatType("broadcast"); setActiveChat(channel.index); }} element={} /> ))}
setSearchTerm(e.target.value)} className="w-full p-2 border border-slate-300 rounded-sm bg-white text-slate-900" />
{filteredNodes.map((node) => ( { setChatType("direct"); setActiveChat(node.num); }} element={ } /> ))}
{allChannels.map( (channel) => activeChat === channel.index && ( ), )} {filteredNodes.map( (node) => activeChat === node.num && ( ), )}
); }; export default MessagesPage;