import type React from "react"; import toast from "react-hot-toast"; import { base16 } from "rfc4648"; import { IconButton } from "@app/components/IconButton.js"; import { Mono } from "@app/components/Mono.js"; import { useDevice } from "@core/providers/useDevice.js"; import { Hashicon } from "@emeraldpay/hashicon-react"; import { ArrowPathRoundedSquareIcon, EllipsisHorizontalIcon, } from "@heroicons/react/24/outline"; import { Protobuf } from "@meshtastic/meshtasticjs"; export const PeersPage = (): JSX.Element => { const { connection, nodes } = useDevice(); return (
{nodes.map((node, index) => ( ))}
Name Model MAC Address Versions Last Heard SNR Edit
{node.data.user?.longName} {Protobuf.HardwareModel[node.data.user?.hwModel ?? 0]} {base16 .stringify(node.data.user?.macaddr ?? []) .match(/.{1,2}/g) ?.join(":") ?? ""} {node.metadata ? ( <> {node.metadata.firmwareVersion} / {node.metadata.deviceStateVersion} ) : ( { if (connection) { void toast.promise( connection.getMetadata(node.data.num), { loading: "Requesting Metadata...", success: "Recieved Metadata", error: "No response received", } ); } }} icon={} /> )} {new Date(node.data.lastHeard).toLocaleTimeString()} {node.data.snr}db } />
); };