diff --git a/src/pages/Nodes.tsx b/src/pages/Nodes.tsx index 06d8fb12..389bf0d0 100644 --- a/src/pages/Nodes.tsx +++ b/src/pages/Nodes.tsx @@ -19,12 +19,17 @@ export interface DeleteNoteDialogProps { onOpenChange: (open: boolean) => void; } -function shortNameFromNode(node: ReturnType["nodes"][number]): string { - const shortNameOfNode = node.user?.shortName ?? (node.user?.macaddr - ? `${base16 - .stringify(node.user?.macaddr.subarray(4, 6) ?? []) - .toLowerCase()}` - : `${numberToHexUnpadded(node.num).slice(-4)}`); +function shortNameFromNode( + node: ReturnType["nodes"][number], +): string { + const shortNameOfNode = node.user?.shortName ?? + (node.user?.macaddr + ? `${ + base16 + .stringify(node.user?.macaddr.subarray(4, 6) ?? []) + .toLowerCase() + }` + : `${numberToHexUnpadded(node.num).slice(-4)}`); return String(shortNameOfNode); } @@ -70,7 +75,6 @@ const NodesPage = (): JSX.Element => { }; }, [connection]); - const handleLocation = useCallback( (location: Types.PacketMetadata) => { if (location.to.valueOf() !== hardware.myNodeNum) return; @@ -97,12 +101,12 @@ const NodesPage = (): JSX.Element => { headings={[ { title: "", type: "blank", sortable: false }, { title: "Long Name", type: "normal", sortable: true }, - { title: "Model", type: "normal", sortable: true }, - { title: "MAC Address", type: "normal", sortable: true }, + { title: "Connection", type: "normal", sortable: true }, { title: "Last Heard", type: "normal", sortable: true }, - { title: "SNR", type: "normal", sortable: true }, { title: "Encryption", type: "normal", sortable: false }, - { title: "Connection", type: "normal", sortable: true }, + { title: "SNR", type: "normal", sortable: true }, + { title: "Model", type: "normal", sortable: true }, + { title: "MAC Address", type: "normal", sortable: true }, ]} rows={filteredNodes.map((node) => [
@@ -111,55 +115,55 @@ const NodesPage = (): JSX.Element => {

setSelectedNode(node)} - onKeyUp={(evt)=>{ evt.key === "Enter" && setSelectedNode(node) }} + onKeyUp={(evt) => { + evt.key === "Enter" && setSelectedNode(node); + }} className="cursor-pointer underline" tabIndex={0} role="button" > {node.user?.longName ?? (node.user?.macaddr - ? `Meshtastic ${base16 - .stringify(node.user?.macaddr.subarray(4, 6) ?? []) - .toLowerCase()}` + ? `Meshtastic ${ + base16 + .stringify(node.user?.macaddr.subarray(4, 6) ?? []) + .toLowerCase() + }` : `!${numberToHexUnpadded(node.num)}`)}

, - - - {Protobuf.Mesh.HardwareModel[node.user?.hwModel ?? 0]} - , - - {base16 - .stringify(node.user?.macaddr ?? []) - .match(/.{1,2}/g) - ?.join(":") ?? "UNK"} + + {node.lastHeard !== 0 + ? node.viaMqtt === false && node.hopsAway === 0 + ? "Direct" + : `${node.hopsAway?.toString()} ${ + node.hopsAway > 1 ? "hops" : "hop" + } away` + : "-"} + {node.viaMqtt === true ? ", via MQTT" : ""} , - {node.lastHeard === 0 ? ( -

Never

- ) : ( - - )} + {node.lastHeard === 0 + ?

Never

+ : } +
, + + {node.user?.publicKey && node.user?.publicKey.length > 0 + ? + : } , {node.snr}db/ {Math.min(Math.max((node.snr + 10) * 5, 0), 100)}%/ {(node.snr + 10) * 5}raw , - - {node.user?.publicKey && node.user?.publicKey.length > 0 ? ( - - ) : ( - - )} + + {Protobuf.Mesh.HardwareModel[node.user?.hwModel ?? 0]} , - - {node.lastHeard !== 0 - ? node.viaMqtt === false && node.hopsAway === 0 - ? "Direct" - : `${node.hopsAway?.toString()} ${node.hopsAway > 1 ? "hops" : "hop" - } away` - : "-"} - {node.viaMqtt === true ? ", via MQTT" : ""} + + {base16 + .stringify(node.user?.macaddr ?? []) + .match(/.{1,2}/g) + ?.join(":") ?? "UNK"} , ])} />