From 4399d83c1b749f6d27c864d20396f7e1bebd7127 Mon Sep 17 00:00:00 2001
From: Adam McQuilkin <46639306+ajmcquilkin@users.noreply.github.com>
Date: Sat, 13 Jan 2024 13:30:50 -0800
Subject: [PATCH 1/4] Added closeDialog prop to tab elements
---
src/components/Dialog/NewDeviceDialog.tsx | 16 ++++++++++++++--
src/components/PageComponents/Connect/BLE.tsx | 5 ++++-
src/components/PageComponents/Connect/HTTP.tsx | 7 +++++--
src/components/PageComponents/Connect/Serial.tsx | 5 ++++-
4 files changed, 27 insertions(+), 6 deletions(-)
diff --git a/src/components/Dialog/NewDeviceDialog.tsx b/src/components/Dialog/NewDeviceDialog.tsx
index 927e4277..d3277884 100644
--- a/src/components/Dialog/NewDeviceDialog.tsx
+++ b/src/components/Dialog/NewDeviceDialog.tsx
@@ -16,7 +16,19 @@ import {
import { Link } from "@components/UI/Typography/Link.js";
import { Subtle } from "@components/UI/Typography/Subtle.js";
-const tabs = [
+export interface TabElementProps {
+ closeDialog: () => void;
+}
+
+export interface TabManifest {
+ label: string;
+ element: React.FC;
+ disabled: boolean;
+ disabledMessage: string;
+ disabledLink?: string;
+}
+
+const tabs: TabManifest[] = [
{
label: "HTTP",
element: HTTP,
@@ -74,7 +86,7 @@ export const NewDeviceDialog = ({
{tab.disabledMessage}
) : (
-
+ onOpenChange(false)} />
)}
))}
diff --git a/src/components/PageComponents/Connect/BLE.tsx b/src/components/PageComponents/Connect/BLE.tsx
index fcadd9fc..5fcbb57d 100644
--- a/src/components/PageComponents/Connect/BLE.tsx
+++ b/src/components/PageComponents/Connect/BLE.tsx
@@ -1,3 +1,4 @@
+import { TabElementProps } from "@app/components/Dialog/NewDeviceDialog";
import { Button } from "@components/UI/Button.js";
import { Mono } from "@components/generic/Mono.js";
import { useAppStore } from "@core/stores/appStore.js";
@@ -7,7 +8,7 @@ import { randId } from "@core/utils/randId.js";
import { BleConnection, Constants } from "@meshtastic/js";
import { useCallback, useEffect, useState } from "react";
-export const BLE = (): JSX.Element => {
+export const BLE = ({ closeDialog }: TabElementProps): JSX.Element => {
const [bleDevices, setBleDevices] = useState([]);
const { addDevice } = useDeviceStore();
const { setSelectedDevice } = useAppStore();
@@ -30,6 +31,8 @@ export const BLE = (): JSX.Element => {
});
device.addConnection(connection);
subscribeAll(device, connection);
+
+ closeDialog();
};
return (
diff --git a/src/components/PageComponents/Connect/HTTP.tsx b/src/components/PageComponents/Connect/HTTP.tsx
index 8011d30e..c780e415 100644
--- a/src/components/PageComponents/Connect/HTTP.tsx
+++ b/src/components/PageComponents/Connect/HTTP.tsx
@@ -1,3 +1,4 @@
+import { TabElementProps } from "@app/components/Dialog/NewDeviceDialog";
import { Button } from "@components/UI/Button.js";
import { Input } from "@components/UI/Input.js";
import { Label } from "@components/UI/Label.js";
@@ -9,7 +10,7 @@ import { randId } from "@core/utils/randId.js";
import { HttpConnection } from "@meshtastic/js";
import { Controller, useForm, useWatch } from "react-hook-form";
-export const HTTP = (): JSX.Element => {
+export const HTTP = ({ closeDialog }: TabElementProps): JSX.Element => {
const { addDevice } = useDeviceStore();
const { setSelectedDevice } = useAppStore();
const { register, handleSubmit, control } = useForm<{
@@ -18,7 +19,7 @@ export const HTTP = (): JSX.Element => {
}>({
defaultValues: {
ip: ["client.meshtastic.org", "localhost"].includes(
- window.location.hostname,
+ window.location.hostname
)
? "meshtastic.local"
: window.location.hostname,
@@ -45,6 +46,8 @@ export const HTTP = (): JSX.Element => {
});
device.addConnection(connection);
subscribeAll(device, connection);
+
+ closeDialog();
});
return (
diff --git a/src/components/PageComponents/Connect/Serial.tsx b/src/components/PageComponents/Connect/Serial.tsx
index 82dc775d..317f78d5 100644
--- a/src/components/PageComponents/Connect/Serial.tsx
+++ b/src/components/PageComponents/Connect/Serial.tsx
@@ -1,3 +1,4 @@
+import { TabElementProps } from "@app/components/Dialog/NewDeviceDialog";
import { Button } from "@components/UI/Button.js";
import { Mono } from "@components/generic/Mono.js";
import { useAppStore } from "@core/stores/appStore.js";
@@ -7,7 +8,7 @@ import { randId } from "@core/utils/randId.js";
import { SerialConnection } from "@meshtastic/js";
import { useCallback, useEffect, useState } from "react";
-export const Serial = (): JSX.Element => {
+export const Serial = ({ closeDialog }: TabElementProps): JSX.Element => {
const [serialPorts, setSerialPorts] = useState([]);
const { addDevice } = useDeviceStore();
const { setSelectedDevice } = useAppStore();
@@ -40,6 +41,8 @@ export const Serial = (): JSX.Element => {
.catch((e: Error) => console.log(`Unable to Connect: ${e.message}`));
device.addConnection(connection);
subscribeAll(device, connection);
+
+ closeDialog();
};
return (
From af09ab6707a46f39b964207d10e282c2d7ef45e8 Mon Sep 17 00:00:00 2001
From: pdxlocations
Date: Wed, 10 Jan 2024 22:21:23 -0800
Subject: [PATCH 2/4] clarify proxy description
---
src/components/PageComponents/ModuleConfig/MQTT.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/PageComponents/ModuleConfig/MQTT.tsx b/src/components/PageComponents/ModuleConfig/MQTT.tsx
index 874d7c3f..dbdce59d 100644
--- a/src/components/PageComponents/ModuleConfig/MQTT.tsx
+++ b/src/components/PageComponents/ModuleConfig/MQTT.tsx
@@ -115,7 +115,7 @@ export const MQTT = (): JSX.Element => {
name: "proxyToClientEnabled",
label: "Proxy to Client Enabled",
description:
- "Whether to proxy MQTT packets to the client (for example to Home Assistant)",
+ "Use the client's internet connection for MQTT (feature only active in mobile apps)",
disabledBy: [
{
fieldName: "enabled",
From 7fb29463619a26ae11f2f554bda39e42c6a8c069 Mon Sep 17 00:00:00 2001
From: Sacha Weatherstone
Date: Mon, 15 Jan 2024 10:31:52 +1000
Subject: [PATCH 3/4] allow decimals in form inputs
---
src/components/Form/FormInput.tsx | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/components/Form/FormInput.tsx b/src/components/Form/FormInput.tsx
index bd61a3f2..af69d882 100644
--- a/src/components/Form/FormInput.tsx
+++ b/src/components/Form/FormInput.tsx
@@ -11,6 +11,7 @@ export interface InputFieldProps extends BaseFormBuilderProps {
properties?: {
prefix?: string;
suffix?: string;
+ step?: number;
action?: {
icon: LucideIcon;
onClick: () => void;
@@ -30,11 +31,12 @@ export function GenericInput({
render={({ field: { value, onChange, ...rest } }) => (
onChange(
field.type === "number"
- ? parseInt(e.target.value)
+ ? Number.parseInt(e.target.value)
: e.target.value,
)
}
From 3058dc0185c49538185cfdfa9d9a92e4871d53d4 Mon Sep 17 00:00:00 2001
From: Sacha Weatherstone
Date: Mon, 15 Jan 2024 10:32:10 +1000
Subject: [PATCH 4/4] allow decimal for adcMultiplierOverride
---
src/components/PageComponents/Config/Power.tsx | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/components/PageComponents/Config/Power.tsx b/src/components/PageComponents/Config/Power.tsx
index 8698248a..824db818 100644
--- a/src/components/PageComponents/Config/Power.tsx
+++ b/src/components/PageComponents/Config/Power.tsx
@@ -48,6 +48,9 @@ export const Power = (): JSX.Element => {
name: "adcMultiplierOverride",
label: "ADC Multiplier Override ratio",
description: "Used for tweaking battery voltage reading",
+ properties: {
+ step: 0.01,
+ },
},
{
type: "number",