import { ChannelChat } from "@components/PageComponents/Messages/ChannelChat.js"; import { PageLayout } from "@components/PageLayout.js"; import { Sidebar } from "@components/Sidebar.js"; import { SidebarSection } from "@components/UI/Sidebar/SidebarSection.js"; import { SidebarButton } from "@components/UI/Sidebar/sidebarButton.js"; import { useToast } from "@core/hooks/useToast.js"; import { useDevice } from "@core/stores/deviceStore.js"; import { Hashicon } from "@emeraldpay/hashicon-react"; import { Protobuf, Types } from "@meshtastic/js"; import { getChannelName } from "@pages/Channels.js"; import { HashIcon, LockIcon, LockOpenIcon, WaypointsIcon } from "lucide-react"; import { useState } from "react"; export const MessagesPage = (): JSX.Element => { const { channels, nodes, hardware, messages, traceroutes, connection } = useDevice(); const [chatType, setChatType] = useState("broadcast"); const [activeChat, setActiveChat] = useState( Types.ChannelNumber.Primary, ); const filteredNodes = Array.from(nodes.values()).filter( (n) => n.num !== hardware.myNodeNum, ); 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(); return ( <> {filteredChannels.map((channel) => ( { setChatType("broadcast"); setActiveChat(channel.index); }} element={} /> ))} {filteredNodes.map((node) => ( { setChatType("direct"); setActiveChat(node.num); }} element={} /> ))}
toast({ title: "Traceroute sent.", }), ); }, }, ] : [] } > {allChannels.map( (channel) => activeChat === channel.index && ( ), )} {filteredNodes.map( (node) => activeChat === node.num && ( ), )}
); };