diff --git a/package.json b/package.json index 6bb4f001..a836551c 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "@emeraldpay/hashicon-react": "^0.5.2", "@hookform/resolvers": "^2.9.7", "@meshtastic/eslint-config": "^1.0.8", - "@meshtastic/meshtasticjs": "^0.6.97", + "@meshtastic/meshtasticjs": "^0.6.98", "base64-js": "^1.5.1", "class-transformer": "^0.5.1", "class-validator": "^0.13.2", @@ -46,7 +46,7 @@ "devDependencies": { "@types/chrome": "^0.0.196", "@types/geodesy": "^2.2.3", - "@types/node": "^18.7.15", + "@types/node": "^18.7.16", "@types/react": "^18.0.18", "@types/react-dom": "^18.0.6", "@types/w3c-web-serial": "^1.0.2", @@ -56,7 +56,7 @@ "rollup-plugin-visualizer": "^5.8.1", "tar": "^6.1.11", "tslib": "^2.4.0", - "typescript": "^4.8.2", + "typescript": "^4.8.3", "vite": "^3.1.0", "vite-plugin-environment": "^1.1.2" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 67a9414e..01ce74ed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,10 +4,10 @@ specifiers: '@emeraldpay/hashicon-react': ^0.5.2 '@hookform/resolvers': ^2.9.7 '@meshtastic/eslint-config': ^1.0.8 - '@meshtastic/meshtasticjs': ^0.6.97 + '@meshtastic/meshtasticjs': ^0.6.98 '@types/chrome': ^0.0.196 '@types/geodesy': ^2.2.3 - '@types/node': ^18.7.15 + '@types/node': ^18.7.16 '@types/react': ^18.0.18 '@types/react-dom': ^18.0.6 '@types/w3c-web-serial': ^1.0.2 @@ -35,7 +35,7 @@ specifiers: rollup-plugin-visualizer: ^5.8.1 tar: ^6.1.11 tslib: ^2.4.0 - typescript: ^4.8.2 + typescript: ^4.8.3 vite: ^3.1.0 vite-plugin-environment: ^1.1.2 zustand: 4.1.1 @@ -44,7 +44,7 @@ dependencies: '@emeraldpay/hashicon-react': 0.5.2 '@hookform/resolvers': 2.9.7_react-hook-form@7.34.2 '@meshtastic/eslint-config': 1.0.8 - '@meshtastic/meshtasticjs': 0.6.97 + '@meshtastic/meshtasticjs': 0.6.98 base64-js: 1.5.1 class-transformer: 0.5.1 class-validator: 0.13.2 @@ -68,7 +68,7 @@ dependencies: devDependencies: '@types/chrome': 0.0.196 '@types/geodesy': 2.2.3 - '@types/node': 18.7.15 + '@types/node': 18.7.16 '@types/react': 18.0.18 '@types/react-dom': 18.0.6 '@types/w3c-web-serial': 1.0.2 @@ -78,7 +78,7 @@ devDependencies: rollup-plugin-visualizer: 5.8.1 tar: 6.1.11 tslib: 2.4.0 - typescript: 4.8.2 + typescript: 4.8.3 vite: 3.1.0 vite-plugin-environment: 1.1.2_vite@3.1.0 @@ -524,28 +524,28 @@ packages: /@meshtastic/eslint-config/1.0.8: resolution: {integrity: sha512-Jzwaf3TyYFGeFuxLRQA5Yj5Rmz097VleFQUkswXH9nvLO81JjJbHgJWbHQ6RpxC31q/2hWV03QdaH98swpYcQA==} dependencies: - '@typescript-eslint/eslint-plugin': 5.36.2_iurrlxgqcgk5svigzxakafpeuu - '@typescript-eslint/parser': 5.36.2_yqf6kl63nyoq5megxukfnom5rm + '@typescript-eslint/eslint-plugin': 5.36.2_2l2r3i3lm6jysqd4ac3ql4n2mm + '@typescript-eslint/parser': 5.36.2_itqs5654cmlnjraw6gjzqacppi eslint: 8.23.0 eslint-config-prettier: 8.5.0_eslint@8.23.0 eslint-import-resolver-typescript: 2.7.1_faomjyrlgqmwswvqymymzkxcqi eslint-plugin-eslint-comments: 3.2.0_eslint@8.23.0 eslint-plugin-import: 2.26.0_ijmu6epd3rsbb7y7umh7oqxvja - eslint-plugin-react: 7.31.7_eslint@8.23.0 + eslint-plugin-react: 7.31.8_eslint@8.23.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.23.0 prettier: 2.7.1 prettier-plugin-tailwindcss: 0.1.13_prettier@2.7.1 - typescript: 4.8.2 + typescript: 4.8.3 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color dev: false - /@meshtastic/meshtasticjs/0.6.97: - resolution: {integrity: sha512-r1QEQLn560VD+R/AE/xXNjh95ksSwfZdocmotJ3A0yQqw+JxOIcZ6ku8ZhXYPYmjhPGo6bxFb6FlvIRB/7xdwA==} + /@meshtastic/meshtasticjs/0.6.98: + resolution: {integrity: sha512-ZEG0q2ZSfBqoS49ESjrnDou3NGZozd8/So586FtTB96J1RsQuWukZJu3vE1eWvzQ1yP3Oweg14s+Wycq1J2yTA==} dependencies: '@meshtastic/eslint-config': 1.0.8 - '@protobuf-ts/runtime': 2.8.0 + '@protobuf-ts/runtime': 2.8.1 '@serialport/stream': 10.3.0 prettier: 2.7.1 serialport: 10.4.0 @@ -576,8 +576,8 @@ packages: fastq: 1.13.0 dev: false - /@protobuf-ts/runtime/2.8.0: - resolution: {integrity: sha512-70LH3oLG5E608jTP+v4nYyinvrpEgkGy0p8gJsog3fwlEuJgARldOQAk+ci5StZUOXHB7MVw0vZ/T0shqIe/pw==} + /@protobuf-ts/runtime/2.8.1: + resolution: {integrity: sha512-D9M5hSumYCovIfNllt7N6ODh4q+LrjiMWtNETvooaf+a2XheZJ7kgjFlsFghti0CFWwtA//of4JXQfw9hU+cCw==} dev: false /@segment/react-tiny-virtual-list/2.2.1_react@18.2.0: @@ -766,8 +766,8 @@ packages: '@types/pbf': 3.0.2 dev: false - /@types/node/18.7.15: - resolution: {integrity: sha512-XnjpaI8Bgc3eBag2Aw4t2Uj/49lLBSStHWfqKvIuXD7FIrZyMLWp8KuAFHAqxMZYTF9l08N1ctUn9YNybZJVmQ==} + /@types/node/18.7.16: + resolution: {integrity: sha512-EQHhixfu+mkqHMZl1R2Ovuvn47PUw18azMJOTwSZr9/fhzHNGXAJ0ma0dayRVchprpCj0Kc1K1xKoWaATWF1qg==} dev: true /@types/pbf/3.0.2: @@ -815,7 +815,7 @@ packages: resolution: {integrity: sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA==} dev: true - /@typescript-eslint/eslint-plugin/5.36.2_iurrlxgqcgk5svigzxakafpeuu: + /@typescript-eslint/eslint-plugin/5.36.2_2l2r3i3lm6jysqd4ac3ql4n2mm: resolution: {integrity: sha512-OwwR8LRwSnI98tdc2z7mJYgY60gf7I9ZfGjN5EjCwwns9bdTuQfAXcsjSB2wSQ/TVNYSGKf4kzVXbNGaZvwiXw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -826,23 +826,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.36.2_yqf6kl63nyoq5megxukfnom5rm + '@typescript-eslint/parser': 5.36.2_itqs5654cmlnjraw6gjzqacppi '@typescript-eslint/scope-manager': 5.36.2 - '@typescript-eslint/type-utils': 5.36.2_yqf6kl63nyoq5megxukfnom5rm - '@typescript-eslint/utils': 5.36.2_yqf6kl63nyoq5megxukfnom5rm + '@typescript-eslint/type-utils': 5.36.2_itqs5654cmlnjraw6gjzqacppi + '@typescript-eslint/utils': 5.36.2_itqs5654cmlnjraw6gjzqacppi debug: 4.3.4 eslint: 8.23.0 functional-red-black-tree: 1.0.1 ignore: 5.2.0 regexpp: 3.2.0 semver: 7.3.7 - tsutils: 3.21.0_typescript@4.8.2 - typescript: 4.8.2 + tsutils: 3.21.0_typescript@4.8.3 + typescript: 4.8.3 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/parser/5.36.2_yqf6kl63nyoq5megxukfnom5rm: + /@typescript-eslint/parser/5.36.2_itqs5654cmlnjraw6gjzqacppi: resolution: {integrity: sha512-qS/Kb0yzy8sR0idFspI9Z6+t7mqk/oRjnAYfewG+VN73opAUvmYL3oPIMmgOX6CnQS6gmVIXGshlb5RY/R22pA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -854,10 +854,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.36.2 '@typescript-eslint/types': 5.36.2 - '@typescript-eslint/typescript-estree': 5.36.2_typescript@4.8.2 + '@typescript-eslint/typescript-estree': 5.36.2_typescript@4.8.3 debug: 4.3.4 eslint: 8.23.0 - typescript: 4.8.2 + typescript: 4.8.3 transitivePeerDependencies: - supports-color dev: false @@ -870,7 +870,7 @@ packages: '@typescript-eslint/visitor-keys': 5.36.2 dev: false - /@typescript-eslint/type-utils/5.36.2_yqf6kl63nyoq5megxukfnom5rm: + /@typescript-eslint/type-utils/5.36.2_itqs5654cmlnjraw6gjzqacppi: resolution: {integrity: sha512-rPQtS5rfijUWLouhy6UmyNquKDPhQjKsaKH0WnY6hl/07lasj8gPaH2UD8xWkePn6SC+jW2i9c2DZVDnL+Dokw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -880,12 +880,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.36.2_typescript@4.8.2 - '@typescript-eslint/utils': 5.36.2_yqf6kl63nyoq5megxukfnom5rm + '@typescript-eslint/typescript-estree': 5.36.2_typescript@4.8.3 + '@typescript-eslint/utils': 5.36.2_itqs5654cmlnjraw6gjzqacppi debug: 4.3.4 eslint: 8.23.0 - tsutils: 3.21.0_typescript@4.8.2 - typescript: 4.8.2 + tsutils: 3.21.0_typescript@4.8.3 + typescript: 4.8.3 transitivePeerDependencies: - supports-color dev: false @@ -895,7 +895,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /@typescript-eslint/typescript-estree/5.36.2_typescript@4.8.2: + /@typescript-eslint/typescript-estree/5.36.2_typescript@4.8.3: resolution: {integrity: sha512-8fyH+RfbKc0mTspfuEjlfqA4YywcwQK2Amcf6TDOwaRLg7Vwdu4bZzyvBZp4bjt1RRjQ5MDnOZahxMrt2l5v9w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -910,13 +910,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.7 - tsutils: 3.21.0_typescript@4.8.2 - typescript: 4.8.2 + tsutils: 3.21.0_typescript@4.8.3 + typescript: 4.8.3 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/utils/5.36.2_yqf6kl63nyoq5megxukfnom5rm: + /@typescript-eslint/utils/5.36.2_itqs5654cmlnjraw6gjzqacppi: resolution: {integrity: sha512-uNcopWonEITX96v9pefk9DC1bWMdkweeSsewJ6GeC7L6j2t0SJywisgkr9wUTtXk90fi2Eljj90HSHm3OGdGRg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -925,7 +925,7 @@ packages: '@types/json-schema': 7.0.11 '@typescript-eslint/scope-manager': 5.36.2 '@typescript-eslint/types': 5.36.2 - '@typescript-eslint/typescript-estree': 5.36.2_typescript@4.8.2 + '@typescript-eslint/typescript-estree': 5.36.2_typescript@4.8.3 eslint: 8.23.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@8.23.0 @@ -1084,8 +1084,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001390 - electron-to-chromium: 1.4.242 + caniuse-lite: 1.0.30001393 + electron-to-chromium: 1.4.246 node-releases: 2.0.6 update-browserslist-db: 1.0.7_browserslist@4.21.3 dev: true @@ -1105,8 +1105,8 @@ packages: engines: {node: '>=6'} dev: false - /caniuse-lite/1.0.30001390: - resolution: {integrity: sha512-sS4CaUM+/+vqQUlCvCJ2WtDlV81aWtHhqeEVkLokVJJa3ViN4zDxAGfq9R8i1m90uGHxo99cy10Od+lvn3hf0g==} + /caniuse-lite/1.0.30001393: + resolution: {integrity: sha512-N/od11RX+Gsk+1qY/jbPa0R6zJupEa0lxeBG598EbrtblxVCTJsQwbRBm6+V+rxpc5lHKdsXb9RY83cZIPLseA==} dev: true /chalk/2.4.2: @@ -1183,7 +1183,7 @@ packages: dev: false /concat-map/0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} dev: false /convert-source-map/1.8.0: @@ -1350,8 +1350,8 @@ packages: resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==} dev: false - /electron-to-chromium/1.4.242: - resolution: {integrity: sha512-nPdgMWtjjWGCtreW/2adkrB2jyHjClo9PtVhR6rW+oxa4E4Wom642Tn+5LslHP3XPL5MCpkn5/UEY60EXylNeQ==} + /electron-to-chromium/1.4.246: + resolution: {integrity: sha512-/wFCHUE+Hocqr/LlVGsuKLIw4P2lBWwFIDcNMDpJGzyIysQV4aycpoOitAs32FT94EHKnNqDR/CVZJFbXEufJA==} dev: true /emoji-regex/8.0.0: @@ -1709,7 +1709,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.36.2_yqf6kl63nyoq5megxukfnom5rm + '@typescript-eslint/parser': 5.36.2_itqs5654cmlnjraw6gjzqacppi debug: 3.2.7 eslint: 8.23.0 eslint-import-resolver-node: 0.3.6 @@ -1739,7 +1739,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.36.2_yqf6kl63nyoq5megxukfnom5rm + '@typescript-eslint/parser': 5.36.2_itqs5654cmlnjraw6gjzqacppi array-includes: 3.1.5 array.prototype.flat: 1.3.0 debug: 2.6.9 @@ -1769,8 +1769,8 @@ packages: eslint: 8.23.0 dev: false - /eslint-plugin-react/7.31.7_eslint@8.23.0: - resolution: {integrity: sha512-8NldBTeYp/kQoTV1uT0XF6HcmDqbgZ0lNPkN0wlRw8DJKXEnaWu+oh/6gt3xIhzvQ35wB2Y545fJhIbJSZ2NNw==} + /eslint-plugin-react/7.31.8_eslint@8.23.0: + resolution: {integrity: sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 @@ -1951,8 +1951,8 @@ packages: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: false - /fast-glob/3.2.11: - resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} + /fast-glob/3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -2174,7 +2174,7 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.11 + fast-glob: 3.2.12 ignore: 5.2.0 merge2: 1.4.1 slash: 3.0.0 @@ -2972,7 +2972,7 @@ packages: dev: false /quotemeta/0.0.0: - resolution: {integrity: sha512-1XGObUh7RN5b58vKuAsrlfqT+Rc4vmw8N4pP9gFCq1GFlTdV0Ex/D2Ro1Drvrqj++HPi3ig0Np17XPslELeMRA==} + resolution: {integrity: sha1-UdOgbuD81uO1AdvSiQQ1Gtelo4w=} dev: true /react-dom/18.2.0_react@18.2.0: @@ -3474,14 +3474,14 @@ packages: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} dev: true - /tsutils/3.21.0_typescript@4.8.2: + /tsutils/3.21.0_typescript@4.8.3: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.8.2 + typescript: 4.8.3 dev: false /type-check/0.4.0: @@ -3496,8 +3496,8 @@ packages: engines: {node: '>=10'} dev: false - /typescript/4.8.2: - resolution: {integrity: sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==} + /typescript/4.8.3: + resolution: {integrity: sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==} engines: {node: '>=4.2.0'} hasBin: true diff --git a/src/components/Dialog/PeersDialog.tsx b/src/components/Dialog/PeersDialog.tsx index e54e201c..979f7606 100644 --- a/src/components/Dialog/PeersDialog.tsx +++ b/src/components/Dialog/PeersDialog.tsx @@ -94,7 +94,7 @@ export const PeersDialog = ({ onClick={() => { void connection?.sendPacket( Protobuf.AdminMessage.toBinary({ - variant: { + payloadVariant: { oneofKind: "getConfigRequest", getConfigRequest: Protobuf.AdminMessage_ConfigType.LORA_CONFIG, diff --git a/src/components/PageComponents/Config/Bluetooth.tsx b/src/components/PageComponents/Config/Bluetooth.tsx index e7c766c2..7038a37b 100644 --- a/src/components/PageComponents/Config/Bluetooth.tsx +++ b/src/components/PageComponents/Config/Bluetooth.tsx @@ -50,7 +50,7 @@ export const Bluetooth = (): JSX.Element => { const pairingMode = useWatch({ control, name: "mode", - defaultValue: Protobuf.Config_BluetoothConfig_PairingMode.RandomPin, + defaultValue: Protobuf.Config_BluetoothConfig_PairingMode.RANDOM_PIN, }); return ( @@ -82,7 +82,7 @@ export const Bluetooth = (): JSX.Element => { { )} /> - ); }; diff --git a/src/components/PageComponents/Config/WiFi.tsx b/src/components/PageComponents/Config/Network.tsx similarity index 60% rename from src/components/PageComponents/Config/WiFi.tsx rename to src/components/PageComponents/Config/Network.tsx index 8fd92f8a..0d2e84b9 100644 --- a/src/components/PageComponents/Config/WiFi.tsx +++ b/src/components/PageComponents/Config/Network.tsx @@ -11,13 +11,13 @@ import { import { Controller, useForm, useWatch } from "react-hook-form"; import { renderOptions } from "@app/core/utils/selectEnumOptions.js"; -import { WiFiValidation } from "@app/validation/config/wifi.js"; +import { NetworkValidation } from "@app/validation/config/network.js"; import { Form } from "@components/form/Form"; import { useDevice } from "@core/providers/useDevice.js"; import { classValidatorResolver } from "@hookform/resolvers/class-validator"; import { Protobuf } from "@meshtastic/meshtasticjs"; -export const WiFi = (): JSX.Element => { +export const Network = (): JSX.Element => { const { config, connection } = useDevice(); const [loading, setLoading] = useState(false); const { @@ -26,32 +26,32 @@ export const WiFi = (): JSX.Element => { formState: { errors, isDirty }, control, reset, - } = useForm({ - defaultValues: config.wifi, - resolver: classValidatorResolver(WiFiValidation), + } = useForm({ + defaultValues: config.network, + resolver: classValidatorResolver(NetworkValidation), }); const wifiEnabled = useWatch({ control, - name: "enabled", + name: "wifiEnabled", defaultValue: false, }); useEffect(() => { - reset(config.wifi); - }, [reset, config.wifi]); + reset(config.network); + }, [reset, config.network]); const onSubmit = handleSubmit((data) => { setLoading(true); void connection?.setConfig( { payloadVariant: { - oneofKind: "wifi", - wifi: data, + oneofKind: "network", + network: data, }, }, async () => { - toaster.success("Successfully updated WiFi config"); + toaster.success("Successfully updated Network config"); reset({ ...data }); setLoading(false); await Promise.resolve(); @@ -63,11 +63,11 @@ export const WiFi = (): JSX.Element => { ( @@ -77,24 +77,31 @@ export const WiFi = (): JSX.Element => { - {renderOptions(Protobuf.Config_WiFiConfig_WiFiMode)} + {renderOptions(Protobuf.Config_NetworkConfig_WiFiMode)} + ); diff --git a/src/components/PageComponents/Config/Position.tsx b/src/components/PageComponents/Config/Position.tsx index 76ffbaf8..c68502a5 100644 --- a/src/components/PageComponents/Config/Position.tsx +++ b/src/components/PageComponents/Config/Position.tsx @@ -144,7 +144,7 @@ export const Position = (): JSX.Element => { .filter( (value) => parseInt(value[0]) !== - Protobuf.Config_PositionConfig_PositionFlags.POS_UNDEFINED + Protobuf.Config_PositionConfig_PositionFlags.UNSET ) .map((value) => { return { diff --git a/src/components/PageComponents/Config/Power.tsx b/src/components/PageComponents/Config/Power.tsx index edf33334..eef14bbf 100644 --- a/src/components/PageComponents/Config/Power.tsx +++ b/src/components/PageComponents/Config/Power.tsx @@ -1,15 +1,13 @@ import type React from "react"; import { useEffect, useState } from "react"; -import { FormField, SelectField, Switch, TextInputField } from "evergreen-ui"; +import { FormField, Switch, TextInputField } from "evergreen-ui"; import { Controller, useForm } from "react-hook-form"; import { PowerValidation } from "@app/validation/config/power.js"; import { Form } from "@components/form/Form"; import { useDevice } from "@core/providers/useDevice.js"; -import { renderOptions } from "@core/utils/selectEnumOptions.js"; import { classValidatorResolver } from "@hookform/resolvers/class-validator"; -import { Protobuf } from "@meshtastic/meshtasticjs"; export const Power = (): JSX.Element => { const { config, connection } = useDevice(); @@ -47,15 +45,6 @@ export const Power = (): JSX.Element => { }); return (
- - {renderOptions(Protobuf.Config_PowerConfig_ChargeCurrent)} - ((set, get) => ({ case "power": device.config.power = config.payloadVariant.power; break; - case "wifi": - device.config.wifi = config.payloadVariant.wifi; + case "network": + device.config.network = config.payloadVariant.network; break; case "display": device.config.display = config.payloadVariant.display; @@ -150,7 +150,7 @@ export const useDeviceStore = create((set, get) => ({ device.config.lora = config.payloadVariant.lora; device.regionUnset = config.payloadVariant.lora.region === - Protobuf.Config_LoRaConfig_RegionCode.Unset; + Protobuf.Config_LoRaConfig_RegionCode.UNSET; break; } } diff --git a/src/pages/Config/DeviceConfig.tsx b/src/pages/Config/DeviceConfig.tsx index bd2cdb02..92938c43 100644 --- a/src/pages/Config/DeviceConfig.tsx +++ b/src/pages/Config/DeviceConfig.tsx @@ -3,6 +3,7 @@ import { useState } from "react"; import { Pane, Tab, Tablist } from "evergreen-ui"; +import { Network } from "@app/components/PageComponents/Config/Network.js"; import { Bluetooth } from "@components/PageComponents/Config/Bluetooth.js"; import { Device } from "@components/PageComponents/Config/Device.js"; import { Display } from "@components/PageComponents/Config/Display.js"; @@ -10,7 +11,6 @@ import { LoRa } from "@components/PageComponents/Config/LoRa.js"; import { Position } from "@components/PageComponents/Config/Position.js"; import { Power } from "@components/PageComponents/Config/Power.js"; import { User } from "@components/PageComponents/Config/User.js"; -import { WiFi } from "@components/PageComponents/Config/WiFi.js"; import { useDevice } from "@core/providers/useDevice.js"; export const DeviceConfig = (): JSX.Element => { @@ -35,8 +35,8 @@ export const DeviceConfig = (): JSX.Element => { element: Power, }, { - label: "WiFi", - element: WiFi, + label: "Network", + element: Network, disabled: !hardware.hasWifi, }, { diff --git a/src/validation/config/device.ts b/src/validation/config/device.ts index bd9cc69c..e96713d3 100644 --- a/src/validation/config/device.ts +++ b/src/validation/config/device.ts @@ -1,4 +1,4 @@ -import { IsBoolean, IsEnum, Length } from "class-validator"; +import { IsBoolean, IsEnum } from "class-validator"; import { Protobuf } from "@meshtastic/meshtasticjs"; @@ -14,7 +14,4 @@ export class DeviceValidation implements Protobuf.Config_DeviceConfig { @IsBoolean() debugLogEnabled: boolean; - - @Length(2, 30) - ntpServer: string; } diff --git a/src/validation/config/lora.ts b/src/validation/config/lora.ts index 53030ef1..2708fc65 100644 --- a/src/validation/config/lora.ts +++ b/src/validation/config/lora.ts @@ -15,7 +15,7 @@ export class LoRaValidation implements Protobuf.Config_LoRaConfig { bandwidth: number; @IsInt() - @Min(7) + // @Min(7) @Max(12) spreadFactor: number; diff --git a/src/validation/config/network.ts b/src/validation/config/network.ts new file mode 100644 index 00000000..15907df6 --- /dev/null +++ b/src/validation/config/network.ts @@ -0,0 +1,20 @@ +import { IsBoolean, IsEnum, Length } from "class-validator"; + +import { Protobuf } from "@meshtastic/meshtasticjs"; + +export class NetworkValidation implements Protobuf.Config_NetworkConfig { + @IsBoolean() + wifiEnabled: boolean; + + @IsEnum(Protobuf.Config_NetworkConfig_WiFiMode) + wifiMode: Protobuf.Config_NetworkConfig_WiFiMode; + + @Length(1, 33) + wifiSsid: string; + + @Length(8, 64) + wifiPsk: string; + + @Length(2, 30) + ntpServer: string; +} diff --git a/src/validation/config/power.ts b/src/validation/config/power.ts index cc4de12e..cc81c407 100644 --- a/src/validation/config/power.ts +++ b/src/validation/config/power.ts @@ -1,11 +1,8 @@ -import { IsBoolean, IsEnum, IsInt, Max, Min } from "class-validator"; +import { IsBoolean, IsInt, Max, Min } from "class-validator"; -import { Protobuf } from "@meshtastic/meshtasticjs"; +import type { Protobuf } from "@meshtastic/meshtasticjs"; export class PowerValidation implements Protobuf.Config_PowerConfig { - @IsEnum(Protobuf.Config_PowerConfig_ChargeCurrent) - chargeCurrent: Protobuf.Config_PowerConfig_ChargeCurrent; - @IsBoolean() isPowerSaving: boolean; diff --git a/src/validation/config/wifi.ts b/src/validation/config/wifi.ts deleted file mode 100644 index b3039afe..00000000 --- a/src/validation/config/wifi.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { IsBoolean, IsEnum, Length } from "class-validator"; - -import { Protobuf } from "@meshtastic/meshtasticjs"; - -export class WiFiValidation implements Protobuf.Config_WiFiConfig { - @IsBoolean() - enabled: boolean; - - @IsEnum(Protobuf.Config_WiFiConfig_WiFiMode) - mode: Protobuf.Config_WiFiConfig_WiFiMode; - - @Length(1, 33) - ssid: string; - - @Length(8, 64) - psk: string; -}