diff --git a/src/components/PageComponents/Messages/ChannelChat.tsx b/src/components/PageComponents/Messages/ChannelChat.tsx
index e43ae196..438591c7 100644
--- a/src/components/PageComponents/Messages/ChannelChat.tsx
+++ b/src/components/PageComponents/Messages/ChannelChat.tsx
@@ -1,6 +1,7 @@
import { Subtle } from "@app/components/UI/Typography/Subtle.js";
import { MessageWithState, useDevice } from "@app/core/stores/deviceStore.js";
import { Message } from "@components/PageComponents/Messages/Message.js";
+import { TraceRoute } from "@components/PageComponents/Messages/TraceRoute.js";
import { MessageInput } from "@components/PageComponents/Messages/MessageInput.js";
import type { Types } from "@meshtastic/js";
import { InboxIcon } from "lucide-react";
@@ -9,12 +10,14 @@ export interface ChannelChatProps {
messages?: MessageWithState[];
channel: Types.ChannelNumber;
to: Types.Destination;
+ traceroutes?: Types.PacketMetadata[];
}
export const ChannelChat = ({
messages,
channel,
to,
+ traceroutes,
}: ChannelChatProps): JSX.Element => {
const { nodes } = useDevice();
@@ -38,6 +41,21 @@ export const ChannelChat = ({
No Messages
)}
+ {traceroutes ? (
+ traceroutes.map((traceroute, index) => (
+
+ ))
+ ) : (
+
+
+ No Traceroutes
+
+ )}
diff --git a/src/components/PageComponents/Messages/TraceRoute.tsx b/src/components/PageComponents/Messages/TraceRoute.tsx
new file mode 100644
index 00000000..86c4c8bb
--- /dev/null
+++ b/src/components/PageComponents/Messages/TraceRoute.tsx
@@ -0,0 +1,33 @@
+import type { MessageWithState } from "@app/core/stores/deviceStore.js";
+import type { Protobuf } from "@meshtastic/js";
+import {
+ WaypointsIcon,
+ ArrowRightLeft,
+} from "lucide-react";
+
+export interface TraceRouteProps {
+ from?: Protobuf.Mesh.NodeInfo;
+ to?: Protobuf.Mesh.NodeInfo;
+ route?: Protobuf.Mesh.RouteDiscovery;
+}
+
+export const TraceRoute = ({
+ from,
+ to,
+ route,
+}: TraceRouteProps): JSX.Element => {
+ return route.length == 0 ? (
+
+
+ {from?.user?.longName}↔{to?.user?.longName}
+
+
+ ) : (
+
+
+ {route}
+
+
+
+ );
+};
diff --git a/src/core/stores/deviceStore.ts b/src/core/stores/deviceStore.ts
index d350c154..a792fb4c 100644
--- a/src/core/stores/deviceStore.ts
+++ b/src/core/stores/deviceStore.ts
@@ -512,7 +512,7 @@ export const useDeviceStore = create
((set, get) => ({
nodetraceroutes.push(traceroute);
device.traceroutes.set(traceroute.from, nodetraceroutes);
} else {
- device.traceroutes.set(traceroute.from, [traceroute]);
+ device.traceroutes.set(traceroute.from, [traceroute]);
}
console.log(device.traceroutes);
}),
diff --git a/src/pages/Messages.tsx b/src/pages/Messages.tsx
index 29a5e9fa..4ac7ec64 100644
--- a/src/pages/Messages.tsx
+++ b/src/pages/Messages.tsx
@@ -13,7 +13,7 @@ import { useToast } from "@core/hooks/useToast.js";
export const MessagesPage = (): JSX.Element => {
- const { channels, nodes, hardware, messages, connection } = useDevice();
+ const { channels, nodes, hardware, messages, traceroutes, connection } = useDevice();
const [chatType, setChatType] =
useState("broadcast");
const [activeChat, setActiveChat] = useState(
@@ -108,6 +108,7 @@ export const MessagesPage = (): JSX.Element => {
to={activeChat}
messages={messages.direct.get(node.num)}
channel={Types.ChannelNumber.Primary}
+ traceroutes={traceroutes.get(node.num)}
/>
),
)}