Browse Source

minor changes and biome fixes

pull/211/head
Hunter Thornsberry 2 years ago
parent
commit
d42e8c10a0
  1. 10
      src/components/PageComponents/Messages/ChannelChat.tsx
  2. 7
      src/components/PageComponents/Messages/TraceRoute.tsx
  3. 16
      src/core/stores/deviceStore.ts
  4. 18
      src/pages/Messages.tsx

10
src/components/PageComponents/Messages/ChannelChat.tsx

@ -4,8 +4,8 @@ import {
useDevice, useDevice,
} from "@app/core/stores/deviceStore.js"; } from "@app/core/stores/deviceStore.js";
import { Message } from "@components/PageComponents/Messages/Message.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 { MessageInput } from "@components/PageComponents/Messages/MessageInput.js";
import { TraceRoute } from "@components/PageComponents/Messages/TraceRoute.js";
import type { Protobuf, Types } from "@meshtastic/js"; import type { Protobuf, Types } from "@meshtastic/js";
import { InboxIcon } from "lucide-react"; import { InboxIcon } from "lucide-react";
@ -34,7 +34,9 @@ export const ChannelChat = ({
key={message.id} key={message.id}
message={message} message={message}
lastMsgSameUser={ lastMsgSameUser={
index === 0 ? false : messages[index - 1].from === message.from index === 0
? false
: messages[index - 1].from === message.from
} }
sender={nodes.get(message.from)} sender={nodes.get(message.from)}
/> />
@ -46,7 +48,9 @@ export const ChannelChat = ({
</div> </div>
)} )}
</div> </div>
<div className={"flex flex-grow flex-col border-slate-400 border-l " + (traceroutes == undefined ? "hidden" : "") }> <div
className={`flex flex-grow flex-col border-slate-400 border-l ${traceroutes === undefined ? "hidden" : ""}`}
>
{to === "broadcast" ? null : traceroutes ? ( {to === "broadcast" ? null : traceroutes ? (
traceroutes.map((traceroute, index) => ( traceroutes.map((traceroute, index) => (
<TraceRoute <TraceRoute

7
src/components/PageComponents/Messages/TraceRoute.tsx

@ -7,7 +7,6 @@ export interface TraceRouteProps {
route: Array<number>; route: Array<number>;
} }
export const TraceRoute = ({ export const TraceRoute = ({
from, from,
to, to,
@ -15,7 +14,7 @@ export const TraceRoute = ({
}: TraceRouteProps): JSX.Element => { }: TraceRouteProps): JSX.Element => {
const { nodes } = useDevice(); const { nodes } = useDevice();
return route.length == 0 ? ( return route.length === 0 ? (
<div className="ml-5 flex"> <div className="ml-5 flex">
<span className="ml-4 border-l-2 border-l-backgroundPrimary pl-2 text-textPrimary"> <span className="ml-4 border-l-2 border-l-backgroundPrimary pl-2 text-textPrimary">
{to?.user?.longName}{from?.user?.longName} {to?.user?.longName}{from?.user?.longName}
@ -25,9 +24,7 @@ export const TraceRoute = ({
<div className="ml-5 flex"> <div className="ml-5 flex">
<span className="ml-4 border-l-2 border-l-backgroundPrimary pl-2 text-textPrimary"> <span className="ml-4 border-l-2 border-l-backgroundPrimary pl-2 text-textPrimary">
{to?.user?.longName} {to?.user?.longName}
{route.map((hop) => ( {route.map((hop) => `${nodes.get(hop)?.user?.longName ?? "Unknown"}`)}
(nodes.get(hop)?.user?.longName ?? "Unknown") + "↔"
))}
{from?.user?.longName} {from?.user?.longName}
</span> </span>
</div> </div>

16
src/core/stores/deviceStore.ts

@ -42,7 +42,10 @@ export interface Device {
direct: Map<number, MessageWithState[]>; direct: Map<number, MessageWithState[]>;
broadcast: Map<Types.ChannelNumber, MessageWithState[]>; broadcast: Map<Types.ChannelNumber, MessageWithState[]>;
}; };
traceroutes: Map<number, Types.PacketMetadata<Protobuf.Mesh.RouteDiscovery>[]>; traceroutes: Map<
number,
Types.PacketMetadata<Protobuf.Mesh.RouteDiscovery>[]
>;
connection?: Types.ConnectionType; connection?: Types.ConnectionType;
activePage: Page; activePage: Page;
activeNode: number; activeNode: number;
@ -76,7 +79,9 @@ export interface Device {
addPosition: (position: Types.PacketMetadata<Protobuf.Mesh.Position>) => void; addPosition: (position: Types.PacketMetadata<Protobuf.Mesh.Position>) => void;
addConnection: (connection: Types.ConnectionType) => void; addConnection: (connection: Types.ConnectionType) => void;
addMessage: (message: MessageWithState) => void; addMessage: (message: MessageWithState) => void;
addTraceRoute: (traceroute: Types.PacketMetadata<Protobuf.Mesh.RouteDiscovery>) => void; addTraceRoute: (
traceroute: Types.PacketMetadata<Protobuf.Mesh.RouteDiscovery>,
) => void;
addMetadata: (from: number, metadata: Protobuf.Mesh.DeviceMetadata) => void; addMetadata: (from: number, metadata: Protobuf.Mesh.DeviceMetadata) => void;
removeNode: (nodeNum: number) => void; removeNode: (nodeNum: number) => void;
setMessageState: ( setMessageState: (
@ -512,7 +517,7 @@ export const useDeviceStore = create<DeviceState>((set, get) => ({
return; return;
} }
const nodetraceroutes = device.traceroutes.get(traceroute.from) const nodetraceroutes = device.traceroutes.get(traceroute.from);
if (nodetraceroutes) { if (nodetraceroutes) {
nodetraceroutes.push(traceroute); nodetraceroutes.push(traceroute);
device.traceroutes.set(traceroute.from, nodetraceroutes); device.traceroutes.set(traceroute.from, nodetraceroutes);
@ -525,7 +530,10 @@ export const useDeviceStore = create<DeviceState>((set, get) => ({
removeNode: (nodeNum) => { removeNode: (nodeNum) => {
set( set(
produce<DeviceState>((draft) => { produce<DeviceState>((draft) => {
const device = draft.devices.get(id);
if (!device) {
return;
}
device.nodes.delete(nodeNum); device.nodes.delete(nodeNum);
}), }),
); );

18
src/pages/Messages.tsx

@ -3,17 +3,17 @@ import { PageLayout } from "@components/PageLayout.js";
import { Sidebar } from "@components/Sidebar.js"; import { Sidebar } from "@components/Sidebar.js";
import { SidebarSection } from "@components/UI/Sidebar/SidebarSection.js"; import { SidebarSection } from "@components/UI/Sidebar/SidebarSection.js";
import { SidebarButton } from "@components/UI/Sidebar/sidebarButton.js"; import { SidebarButton } from "@components/UI/Sidebar/sidebarButton.js";
import { useToast } from "@core/hooks/useToast.js";
import { useDevice } from "@core/stores/deviceStore.js"; import { useDevice } from "@core/stores/deviceStore.js";
import { Hashicon } from "@emeraldpay/hashicon-react"; import { Hashicon } from "@emeraldpay/hashicon-react";
import { Protobuf, Types } from "@meshtastic/js"; import { Protobuf, Types } from "@meshtastic/js";
import { getChannelName } from "@pages/Channels.js"; import { getChannelName } from "@pages/Channels.js";
import { HashIcon, WaypointsIcon } from "lucide-react"; import { HashIcon, WaypointsIcon } from "lucide-react";
import { useState } from "react"; import { useState } from "react";
import { useToast } from "@core/hooks/useToast.js";
export const MessagesPage = (): JSX.Element => { export const MessagesPage = (): JSX.Element => {
const { channels, nodes, hardware, messages, traceroutes, connection } = useDevice(); const { channels, nodes, hardware, messages, traceroutes, connection } =
useDevice();
const [chatType, setChatType] = const [chatType, setChatType] =
useState<Types.PacketDestination>("broadcast"); useState<Types.PacketDestination>("broadcast");
const [activeChat, setActiveChat] = useState<number>( const [activeChat, setActiveChat] = useState<number>(
@ -29,7 +29,6 @@ export const MessagesPage = (): JSX.Element => {
const currentChannel = channels.get(activeChat); const currentChannel = channels.get(activeChat);
const { toast } = useToast(); const { toast } = useToast();
return ( return (
<> <>
<Sidebar> <Sidebar>
@ -82,13 +81,14 @@ export const MessagesPage = (): JSX.Element => {
{ {
icon: WaypointsIcon, icon: WaypointsIcon,
async onClick() { async onClick() {
if (nodes.get(activeChat)?.num === undefined) return; const targetNode = nodes.get(activeChat)?.num;
if (targetNode === undefined) return;
toast({ toast({
title: "Sending Traceroute, please wait..." title: "Sending Traceroute, please wait...",
}) });
await connection?.traceRoute(nodes.get(activeChat)?.num!).then(() => await connection?.traceRoute(targetNode).then(() =>
toast({ toast({
title: `Traceroute sent.`, title: "Traceroute sent.",
}), }),
); );
}, },

Loading…
Cancel
Save