import { Sidebar } from "@components/Sidebar.js"; import { PageLayout } from "@components/PageLayout.js"; import { ChannelChat } from "@components/PageComponents/Messages/ChannelChat.js"; import { useDevice } from "@core/stores/deviceStore.js"; import { Hashicon } from "@emeraldpay/hashicon-react"; import { HashIcon } from "lucide-react"; import { Protobuf, Types } from "@meshtastic/meshtasticjs"; import { SidebarSection } from "@components/UI/Sidebar/SidebarSection.js"; import { useMemo, useState } from "react"; import { getChannelName } from "./Channels.js"; import { SidebarButton } from "@components/UI/Sidebar/sidebarButton.js"; export const MessagesPage = (): JSX.Element => { const { channels, nodes, hardware, messages } = 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 ); return ( <> {channels .filter((ch) => ch.role !== Protobuf.Channel_Role.DISABLED) .map((channel) => ( { setChatType("broadcast"); setActiveChat(channel.index); }} element={} /> ))} {filteredNodes.map((node) => ( { setChatType("direct"); setActiveChat(node.num); }} element={} /> ))} {channels.map( (channel) => activeChat === channel.index && ( ) )} {filteredNodes.map( (node) => activeChat === node.num && ( ) )} ); };