Browse Source

Move remove button to quick options

pull/307/head
Tilen Komel 1 year ago
parent
commit
b3cde1bcd7
  1. 36
      src/components/Dialog/NodeOptionsDialog.tsx
  2. 18
      src/pages/Nodes.tsx

36
src/components/Dialog/NodeOptionsDialog.tsx

@ -1,4 +1,5 @@
import { toast } from "@app/core/hooks/useToast";
import { useAppStore } from "@app/core/stores/appStore";
import { useDevice } from "@app/core/stores/deviceStore";
import {
Dialog,
@ -8,6 +9,7 @@ import {
} from "@components/UI/Dialog";
import type { Protobuf } from "@meshtastic/js";
import { numberToHexUnpadded } from "@noble/curves/abstract/utils";
import { TrashIcon } from "lucide-react";
import type { JSX } from "react";
import { Button } from "../UI/Button";
@ -22,7 +24,8 @@ export const NodeOptionsDialog = ({
open,
onOpenChange,
}: NodeOptionsDialogProps): JSX.Element => {
const { connection } = useDevice();
const { setDialogOpen, connection } = useDevice();
const { setNodeNumToBeRemoved } = useAppStore();
const longName =
node?.user?.longName ??
(node ? `!${numberToHexUnpadded(node?.num)}` : "Unknown");
@ -30,27 +33,27 @@ export const NodeOptionsDialog = ({
node?.user?.shortName ??
(node ? `${numberToHexUnpadded(node?.num).substring(0, 4)}` : "UNK");
function handleTraceroute() {
function handleRequestPosition() {
if (!node) return;
toast({
title: "Sending Traceroute, please wait...",
title: "Requesting position, please wait...",
});
connection?.traceRoute(node.num).then(() =>
connection?.requestPosition(node.num).then(() =>
toast({
title: "Traceroute sent.",
title: "Position request sent.",
}),
);
onOpenChange();
}
function handleRequestPosition() {
function handleTraceroute() {
if (!node) return;
toast({
title: "Requesting position, please wait...",
title: "Sending Traceroute, please wait...",
});
connection?.requestPosition(node.num).then(() =>
connection?.traceRoute(node.num).then(() =>
toast({
title: "Position request sent.",
title: "Traceroute sent.",
}),
);
onOpenChange();
@ -63,11 +66,24 @@ export const NodeOptionsDialog = ({
<DialogTitle>{`${longName} (${shortName})`}</DialogTitle>
</DialogHeader>
<div className="flex flex-col space-y-1">
<div>
<Button onClick={handleRequestPosition}>Request Position</Button>
</div>
<div>
<Button onClick={handleTraceroute}>Trace Route</Button>
</div>
<div>
<Button onClick={handleRequestPosition}>Request Position</Button>
<Button
key="remove"
variant="destructive"
onClick={() => {
setNodeNumToBeRemoved(node.num);
setDialogOpen("nodeRemoval", true);
}}
>
<TrashIcon />
Remove
</Button>
</div>
</div>
</DialogContent>

18
src/pages/Nodes.tsx

@ -62,7 +62,6 @@ const NodesPage = (): JSX.Element => {
{ title: "SNR", type: "normal", sortable: true },
{ title: "Encryption", type: "normal", sortable: false },
{ title: "Connection", type: "normal", sortable: true },
{ title: "Remove", type: "normal", sortable: false },
]}
rows={filteredNodes.map((node) => [
<span
@ -70,7 +69,11 @@ const NodesPage = (): JSX.Element => {
className="h-3 w-3 rounded-full bg-accent"
/>,
<h1 key="header" onMouseDown={() => setSelectedNode(node)}>
<h1
key="header"
onMouseDown={() => setSelectedNode(node)}
className="cursor-pointer"
>
{node.user?.longName ??
(node.user?.macaddr
? `Meshtastic ${base16
@ -117,17 +120,6 @@ const NodesPage = (): JSX.Element => {
: "-"}
{node.viaMqtt === true ? ", via MQTT" : ""}
</Mono>,
<Button
key="remove"
variant="destructive"
onClick={() => {
setNodeNumToBeRemoved(node.num);
setDialogOpen("nodeRemoval", true);
}}
>
<TrashIcon />
Remove
</Button>,
])}
/>
<NodeOptionsDialog

Loading…
Cancel
Save