import { useAppStore } from "@app/core/stores/appStore"; import { useDevice } from "@app/core/stores/deviceStore"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "@components/UI/Accordion"; import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, } from "@components/UI/Dialog"; import { Protobuf } from "@meshtastic/js"; import { numberToHexUnpadded } from "@noble/curves/abstract/utils"; import { DeviceImage } from "../generic/DeviceImage"; import { TimeAgo } from "../generic/TimeAgo"; import { Uptime } from "../generic/Uptime"; export interface NodeDetailsDialogProps { open: boolean; onOpenChange: (open: boolean) => void; } export const NodeDetailsDialog = ({ open, onOpenChange, }: NodeDetailsDialogProps) => { const { nodes } = useDevice(); const { nodeNumDetails } = useAppStore(); const device: Protobuf.Mesh.NodeInfo = nodes.get(nodeNumDetails); return device ? ( Node Details for {device.user?.longName ?? "UNKNOWN"} ( {device.user?.shortName ?? "UNK"})

Details:

Hardware:{" "} {Protobuf.Mesh.HardwareModel[device.user?.hwModel ?? 0]}

Node Number: {device.num}

Node HEX: !{numberToHexUnpadded(device.num)}

Role:{" "} { Protobuf.Config.Config_DeviceConfig_Role[ device.user?.role ?? 0 ] }

Last Heard:{" "} {device.lastHeard === 0 ? ( "Never" ) : ( )}

{device.position ? (

Position:

{device.position.latitudeI && device.position.longitudeI ? (

Coordinates:{" "} {device.position.latitudeI / 1e7},{" "} {device.position.longitudeI / 1e7}

) : null} {device.position.altitude ? (

Altitude: {device.position.altitude}m

) : null}
) : null} {device.deviceMetrics ? (

Device Metrics:

{device.deviceMetrics.airUtilTx ? (

Air TX utilization:{" "} {device.deviceMetrics.airUtilTx.toFixed(2)}%

) : null} {device.deviceMetrics.channelUtilization ? (

Channel utilization:{" "} {device.deviceMetrics.channelUtilization.toFixed(2)}%

) : null} {device.deviceMetrics.batteryLevel ? (

Battery level:{" "} {device.deviceMetrics.batteryLevel.toFixed(2)}%

) : null} {device.deviceMetrics.voltage ? (

Voltage: {device.deviceMetrics.voltage.toFixed(2)}V

) : null} {device.deviceMetrics.uptimeSeconds ? (

Uptime:{" "}

) : null}
) : null} {device ? (

All Raw Metrics:

                        {JSON.stringify(device, null, 2)}
                      
) : null}
) : null; };