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",