From d42e8c10a03b078086f7b7481716a887ba4e51a7 Mon Sep 17 00:00:00 2001 From: Hunter Thornsberry Date: Thu, 4 Jul 2024 17:29:40 -0400 Subject: [PATCH] minor changes and biome fixes --- .../PageComponents/Messages/ChannelChat.tsx | 74 ++++++++++--------- .../PageComponents/Messages/TraceRoute.tsx | 15 ++-- src/core/stores/deviceStore.ts | 22 ++++-- src/pages/Messages.tsx | 48 ++++++------ 4 files changed, 84 insertions(+), 75 deletions(-) diff --git a/src/components/PageComponents/Messages/ChannelChat.tsx b/src/components/PageComponents/Messages/ChannelChat.tsx index 8643446a..81ed007f 100644 --- a/src/components/PageComponents/Messages/ChannelChat.tsx +++ b/src/components/PageComponents/Messages/ChannelChat.tsx @@ -4,8 +4,8 @@ import { 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 { TraceRoute } from "@components/PageComponents/Messages/TraceRoute.js"; import type { Protobuf, Types } from "@meshtastic/js"; import { InboxIcon } from "lucide-react"; @@ -28,41 +28,45 @@ export const ChannelChat = ({
- {messages ? ( - messages.map((message, index) => ( - - )) - ) : ( -
- - No Messages -
- )} + {messages ? ( + messages.map((message, index) => ( + + )) + ) : ( +
+ + No Messages +
+ )} +
+
+ {to === "broadcast" ? null : traceroutes ? ( + traceroutes.map((traceroute, index) => ( + + )) + ) : ( +
+ + No Traceroutes +
+ )}
-
- { to === "broadcast" ? null : traceroutes ? ( - traceroutes.map((traceroute, index) => ( - - )) - ) : ( -
- - No Traceroutes -
- )} -
diff --git a/src/components/PageComponents/Messages/TraceRoute.tsx b/src/components/PageComponents/Messages/TraceRoute.tsx index 6bc0a1e5..15d3bdea 100644 --- a/src/components/PageComponents/Messages/TraceRoute.tsx +++ b/src/components/PageComponents/Messages/TraceRoute.tsx @@ -7,7 +7,6 @@ export interface TraceRouteProps { route: Array; } - export const TraceRoute = ({ from, to, @@ -15,20 +14,18 @@ export const TraceRoute = ({ }: TraceRouteProps): JSX.Element => { const { nodes } = useDevice(); - return route.length == 0 ? ( + return route.length === 0 ? (
- {to?.user?.longName}↔{from?.user?.longName} + {to?.user?.longName}↔{from?.user?.longName}
- ) : ( + ) : (
- {to?.user?.longName}↔ - {route.map((hop) => ( - (nodes.get(hop)?.user?.longName ?? "Unknown") + "↔" - ))} - {from?.user?.longName} + {to?.user?.longName}↔ + {route.map((hop) => `${nodes.get(hop)?.user?.longName ?? "Unknown"}↔`)} + {from?.user?.longName}
); diff --git a/src/core/stores/deviceStore.ts b/src/core/stores/deviceStore.ts index 193a4209..29ac6ee0 100644 --- a/src/core/stores/deviceStore.ts +++ b/src/core/stores/deviceStore.ts @@ -42,7 +42,10 @@ export interface Device { direct: Map; broadcast: Map; }; - traceroutes: Map[]>; + traceroutes: Map< + number, + Types.PacketMetadata[] + >; connection?: Types.ConnectionType; activePage: Page; activeNode: number; @@ -76,7 +79,9 @@ export interface Device { addPosition: (position: Types.PacketMetadata) => void; addConnection: (connection: Types.ConnectionType) => void; addMessage: (message: MessageWithState) => void; - addTraceRoute: (traceroute: Types.PacketMetadata) => void; + addTraceRoute: ( + traceroute: Types.PacketMetadata, + ) => void; addMetadata: (from: number, metadata: Protobuf.Mesh.DeviceMetadata) => void; removeNode: (nodeNum: number) => void; setMessageState: ( @@ -512,12 +517,12 @@ export const useDeviceStore = create((set, get) => ({ return; } - const nodetraceroutes = device.traceroutes.get(traceroute.from) + const nodetraceroutes = device.traceroutes.get(traceroute.from); if (nodetraceroutes) { - nodetraceroutes.push(traceroute); - device.traceroutes.set(traceroute.from, nodetraceroutes); + nodetraceroutes.push(traceroute); + device.traceroutes.set(traceroute.from, nodetraceroutes); } else { - device.traceroutes.set(traceroute.from, [traceroute]); + device.traceroutes.set(traceroute.from, [traceroute]); } }), ); @@ -525,7 +530,10 @@ export const useDeviceStore = create((set, get) => ({ removeNode: (nodeNum) => { set( produce((draft) => { - + const device = draft.devices.get(id); + if (!device) { + return; + } device.nodes.delete(nodeNum); }), ); diff --git a/src/pages/Messages.tsx b/src/pages/Messages.tsx index f8d51cd9..4afe1e62 100644 --- a/src/pages/Messages.tsx +++ b/src/pages/Messages.tsx @@ -3,17 +3,17 @@ import { PageLayout } from "@components/PageLayout.js"; import { Sidebar } from "@components/Sidebar.js"; import { SidebarSection } from "@components/UI/Sidebar/SidebarSection.js"; import { SidebarButton } from "@components/UI/Sidebar/sidebarButton.js"; +import { useToast } from "@core/hooks/useToast.js"; import { useDevice } from "@core/stores/deviceStore.js"; import { Hashicon } from "@emeraldpay/hashicon-react"; import { Protobuf, Types } from "@meshtastic/js"; import { getChannelName } from "@pages/Channels.js"; import { HashIcon, WaypointsIcon } from "lucide-react"; import { useState } from "react"; -import { useToast } from "@core/hooks/useToast.js"; - export const MessagesPage = (): JSX.Element => { - const { channels, nodes, hardware, messages, traceroutes, connection } = useDevice(); + const { channels, nodes, hardware, messages, traceroutes, connection } = + useDevice(); const [chatType, setChatType] = useState("broadcast"); const [activeChat, setActiveChat] = useState( @@ -29,7 +29,6 @@ export const MessagesPage = (): JSX.Element => { const currentChannel = channels.get(activeChat); const { toast } = useToast(); - return ( <> @@ -76,26 +75,27 @@ export const MessagesPage = (): JSX.Element => { ? nodes.get(activeChat)?.user?.longName ?? "Unknown" : "Loading..." }`} - actions={ - chatType === "direct" - ? [ - { - icon: WaypointsIcon, - async onClick() { - if (nodes.get(activeChat)?.num === undefined) return; - toast({ - title: "Sending Traceroute, please wait..." - }) - await connection?.traceRoute(nodes.get(activeChat)?.num!).then(() => - toast({ - title: `Traceroute sent.`, - }), - ); - }, - }, - ] - : [] - } + actions={ + chatType === "direct" + ? [ + { + icon: WaypointsIcon, + async onClick() { + const targetNode = nodes.get(activeChat)?.num; + if (targetNode === undefined) return; + toast({ + title: "Sending Traceroute, please wait...", + }); + await connection?.traceRoute(targetNode).then(() => + toast({ + title: "Traceroute sent.", + }), + ); + }, + }, + ] + : [] + } > {allChannels.map( (channel) =>