Browse Source

Update protobufs

pull/39/head
Sacha Weatherstone 4 years ago
parent
commit
4e45990ef5
No known key found for this signature in database GPG Key ID: 7AB2D7E206124B31
  1. 6
      package.json
  2. 110
      pnpm-lock.yaml
  3. 2
      src/components/Dialog/PeersDialog.tsx
  4. 4
      src/components/PageComponents/Config/Bluetooth.tsx
  5. 15
      src/components/PageComponents/Config/Device.tsx
  6. 51
      src/components/PageComponents/Config/Network.tsx
  7. 2
      src/components/PageComponents/Config/Position.tsx
  8. 13
      src/components/PageComponents/Config/Power.tsx
  9. 6
      src/core/stores/deviceStore.ts
  10. 6
      src/pages/Config/DeviceConfig.tsx
  11. 5
      src/validation/config/device.ts
  12. 2
      src/validation/config/lora.ts
  13. 20
      src/validation/config/network.ts
  14. 7
      src/validation/config/power.ts
  15. 17
      src/validation/config/wifi.ts

6
package.json

@ -22,7 +22,7 @@
"@emeraldpay/hashicon-react": "^0.5.2", "@emeraldpay/hashicon-react": "^0.5.2",
"@hookform/resolvers": "^2.9.7", "@hookform/resolvers": "^2.9.7",
"@meshtastic/eslint-config": "^1.0.8", "@meshtastic/eslint-config": "^1.0.8",
"@meshtastic/meshtasticjs": "^0.6.97", "@meshtastic/meshtasticjs": "^0.6.98",
"base64-js": "^1.5.1", "base64-js": "^1.5.1",
"class-transformer": "^0.5.1", "class-transformer": "^0.5.1",
"class-validator": "^0.13.2", "class-validator": "^0.13.2",
@ -46,7 +46,7 @@
"devDependencies": { "devDependencies": {
"@types/chrome": "^0.0.196", "@types/chrome": "^0.0.196",
"@types/geodesy": "^2.2.3", "@types/geodesy": "^2.2.3",
"@types/node": "^18.7.15", "@types/node": "^18.7.16",
"@types/react": "^18.0.18", "@types/react": "^18.0.18",
"@types/react-dom": "^18.0.6", "@types/react-dom": "^18.0.6",
"@types/w3c-web-serial": "^1.0.2", "@types/w3c-web-serial": "^1.0.2",
@ -56,7 +56,7 @@
"rollup-plugin-visualizer": "^5.8.1", "rollup-plugin-visualizer": "^5.8.1",
"tar": "^6.1.11", "tar": "^6.1.11",
"tslib": "^2.4.0", "tslib": "^2.4.0",
"typescript": "^4.8.2", "typescript": "^4.8.3",
"vite": "^3.1.0", "vite": "^3.1.0",
"vite-plugin-environment": "^1.1.2" "vite-plugin-environment": "^1.1.2"
} }

110
pnpm-lock.yaml

@ -4,10 +4,10 @@ specifiers:
'@emeraldpay/hashicon-react': ^0.5.2 '@emeraldpay/hashicon-react': ^0.5.2
'@hookform/resolvers': ^2.9.7 '@hookform/resolvers': ^2.9.7
'@meshtastic/eslint-config': ^1.0.8 '@meshtastic/eslint-config': ^1.0.8
'@meshtastic/meshtasticjs': ^0.6.97 '@meshtastic/meshtasticjs': ^0.6.98
'@types/chrome': ^0.0.196 '@types/chrome': ^0.0.196
'@types/geodesy': ^2.2.3 '@types/geodesy': ^2.2.3
'@types/node': ^18.7.15 '@types/node': ^18.7.16
'@types/react': ^18.0.18 '@types/react': ^18.0.18
'@types/react-dom': ^18.0.6 '@types/react-dom': ^18.0.6
'@types/w3c-web-serial': ^1.0.2 '@types/w3c-web-serial': ^1.0.2
@ -35,7 +35,7 @@ specifiers:
rollup-plugin-visualizer: ^5.8.1 rollup-plugin-visualizer: ^5.8.1
tar: ^6.1.11 tar: ^6.1.11
tslib: ^2.4.0 tslib: ^2.4.0
typescript: ^4.8.2 typescript: ^4.8.3
vite: ^3.1.0 vite: ^3.1.0
vite-plugin-environment: ^1.1.2 vite-plugin-environment: ^1.1.2
zustand: 4.1.1 zustand: 4.1.1
@ -44,7 +44,7 @@ dependencies:
'@emeraldpay/hashicon-react': 0.5.2 '@emeraldpay/hashicon-react': 0.5.2
'@hookform/resolvers': 2.9[email protected] '@hookform/resolvers': 2.9[email protected]
'@meshtastic/eslint-config': 1.0.8 '@meshtastic/eslint-config': 1.0.8
'@meshtastic/meshtasticjs': 0.6.97 '@meshtastic/meshtasticjs': 0.6.98
base64-js: 1.5.1 base64-js: 1.5.1
class-transformer: 0.5.1 class-transformer: 0.5.1
class-validator: 0.13.2 class-validator: 0.13.2
@ -68,7 +68,7 @@ dependencies:
devDependencies: devDependencies:
'@types/chrome': 0.0.196 '@types/chrome': 0.0.196
'@types/geodesy': 2.2.3 '@types/geodesy': 2.2.3
'@types/node': 18.7.15 '@types/node': 18.7.16
'@types/react': 18.0.18 '@types/react': 18.0.18
'@types/react-dom': 18.0.6 '@types/react-dom': 18.0.6
'@types/w3c-web-serial': 1.0.2 '@types/w3c-web-serial': 1.0.2
@ -78,7 +78,7 @@ devDependencies:
rollup-plugin-visualizer: 5.8.1 rollup-plugin-visualizer: 5.8.1
tar: 6.1.11 tar: 6.1.11
tslib: 2.4.0 tslib: 2.4.0
typescript: 4.8.2 typescript: 4.8.3
vite: 3.1.0 vite: 3.1.0
vite-plugin-environment: 1.1[email protected] vite-plugin-environment: 1.1[email protected]
@ -524,28 +524,28 @@ packages:
/@meshtastic/eslint-config/1.0.8: /@meshtastic/eslint-config/1.0.8:
resolution: {integrity: sha512-Jzwaf3TyYFGeFuxLRQA5Yj5Rmz097VleFQUkswXH9nvLO81JjJbHgJWbHQ6RpxC31q/2hWV03QdaH98swpYcQA==} resolution: {integrity: sha512-Jzwaf3TyYFGeFuxLRQA5Yj5Rmz097VleFQUkswXH9nvLO81JjJbHgJWbHQ6RpxC31q/2hWV03QdaH98swpYcQA==}
dependencies: dependencies:
'@typescript-eslint/eslint-plugin': 5.36.2_iurrlxgqcgk5svigzxakafpeuu '@typescript-eslint/eslint-plugin': 5.36.2_2l2r3i3lm6jysqd4ac3ql4n2mm
'@typescript-eslint/parser': 5.36.2_yqf6kl63nyoq5megxukfnom5rm '@typescript-eslint/parser': 5.36.2_itqs5654cmlnjraw6gjzqacppi
eslint: 8.23.0 eslint: 8.23.0
eslint-config-prettier: 8.5[email protected] eslint-config-prettier: 8.5[email protected]
eslint-import-resolver-typescript: 2.7.1_faomjyrlgqmwswvqymymzkxcqi eslint-import-resolver-typescript: 2.7.1_faomjyrlgqmwswvqymymzkxcqi
eslint-plugin-eslint-comments: 3.2[email protected] eslint-plugin-eslint-comments: 3.2[email protected]
eslint-plugin-import: 2.26.0_ijmu6epd3rsbb7y7umh7oqxvja eslint-plugin-import: 2.26.0_ijmu6epd3rsbb7y7umh7oqxvja
eslint-plugin-react: 7.31.7[email protected] eslint-plugin-react: 7.31.8[email protected]
eslint-plugin-react-hooks: 4.6[email protected] eslint-plugin-react-hooks: 4.6[email protected]
prettier: 2.7.1 prettier: 2.7.1
prettier-plugin-tailwindcss: 0.1[email protected] prettier-plugin-tailwindcss: 0.1[email protected]
typescript: 4.8.2 typescript: 4.8.3
transitivePeerDependencies: transitivePeerDependencies:
- eslint-import-resolver-webpack - eslint-import-resolver-webpack
- supports-color - supports-color
dev: false dev: false
/@meshtastic/meshtasticjs/0.6.97: /@meshtastic/meshtasticjs/0.6.98:
resolution: {integrity: sha512-r1QEQLn560VD+R/AE/xXNjh95ksSwfZdocmotJ3A0yQqw+JxOIcZ6ku8ZhXYPYmjhPGo6bxFb6FlvIRB/7xdwA==} resolution: {integrity: sha512-ZEG0q2ZSfBqoS49ESjrnDou3NGZozd8/So586FtTB96J1RsQuWukZJu3vE1eWvzQ1yP3Oweg14s+Wycq1J2yTA==}
dependencies: dependencies:
'@meshtastic/eslint-config': 1.0.8 '@meshtastic/eslint-config': 1.0.8
'@protobuf-ts/runtime': 2.8.0 '@protobuf-ts/runtime': 2.8.1
'@serialport/stream': 10.3.0 '@serialport/stream': 10.3.0
prettier: 2.7.1 prettier: 2.7.1
serialport: 10.4.0 serialport: 10.4.0
@ -576,8 +576,8 @@ packages:
fastq: 1.13.0 fastq: 1.13.0
dev: false dev: false
/@protobuf-ts/runtime/2.8.0: /@protobuf-ts/runtime/2.8.1:
resolution: {integrity: sha512-70LH3oLG5E608jTP+v4nYyinvrpEgkGy0p8gJsog3fwlEuJgARldOQAk+ci5StZUOXHB7MVw0vZ/T0shqIe/pw==} resolution: {integrity: sha512-D9M5hSumYCovIfNllt7N6ODh4q+LrjiMWtNETvooaf+a2XheZJ7kgjFlsFghti0CFWwtA//of4JXQfw9hU+cCw==}
dev: false dev: false
/@segment/react-tiny-virtual-list/[email protected]: /@segment/react-tiny-virtual-list/[email protected]:
@ -766,8 +766,8 @@ packages:
'@types/pbf': 3.0.2 '@types/pbf': 3.0.2
dev: false dev: false
/@types/node/18.7.15: /@types/node/18.7.16:
resolution: {integrity: sha512-XnjpaI8Bgc3eBag2Aw4t2Uj/49lLBSStHWfqKvIuXD7FIrZyMLWp8KuAFHAqxMZYTF9l08N1ctUn9YNybZJVmQ==} resolution: {integrity: sha512-EQHhixfu+mkqHMZl1R2Ovuvn47PUw18azMJOTwSZr9/fhzHNGXAJ0ma0dayRVchprpCj0Kc1K1xKoWaATWF1qg==}
dev: true dev: true
/@types/pbf/3.0.2: /@types/pbf/3.0.2:
@ -815,7 +815,7 @@ packages:
resolution: {integrity: sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA==} resolution: {integrity: sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA==}
dev: true dev: true
/@typescript-eslint/eslint-plugin/5.36.2_iurrlxgqcgk5svigzxakafpeuu: /@typescript-eslint/eslint-plugin/5.36.2_2l2r3i3lm6jysqd4ac3ql4n2mm:
resolution: {integrity: sha512-OwwR8LRwSnI98tdc2z7mJYgY60gf7I9ZfGjN5EjCwwns9bdTuQfAXcsjSB2wSQ/TVNYSGKf4kzVXbNGaZvwiXw==} resolution: {integrity: sha512-OwwR8LRwSnI98tdc2z7mJYgY60gf7I9ZfGjN5EjCwwns9bdTuQfAXcsjSB2wSQ/TVNYSGKf4kzVXbNGaZvwiXw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
@ -826,23 +826,23 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/parser': 5.36.2_yqf6kl63nyoq5megxukfnom5rm '@typescript-eslint/parser': 5.36.2_itqs5654cmlnjraw6gjzqacppi
'@typescript-eslint/scope-manager': 5.36.2 '@typescript-eslint/scope-manager': 5.36.2
'@typescript-eslint/type-utils': 5.36.2_yqf6kl63nyoq5megxukfnom5rm '@typescript-eslint/type-utils': 5.36.2_itqs5654cmlnjraw6gjzqacppi
'@typescript-eslint/utils': 5.36.2_yqf6kl63nyoq5megxukfnom5rm '@typescript-eslint/utils': 5.36.2_itqs5654cmlnjraw6gjzqacppi
debug: 4.3.4 debug: 4.3.4
eslint: 8.23.0 eslint: 8.23.0
functional-red-black-tree: 1.0.1 functional-red-black-tree: 1.0.1
ignore: 5.2.0 ignore: 5.2.0
regexpp: 3.2.0 regexpp: 3.2.0
semver: 7.3.7 semver: 7.3.7
tsutils: 3.21[email protected].2 tsutils: 3.21[email protected].3
typescript: 4.8.2 typescript: 4.8.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: false 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==} resolution: {integrity: sha512-qS/Kb0yzy8sR0idFspI9Z6+t7mqk/oRjnAYfewG+VN73opAUvmYL3oPIMmgOX6CnQS6gmVIXGshlb5RY/R22pA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
@ -854,10 +854,10 @@ packages:
dependencies: dependencies:
'@typescript-eslint/scope-manager': 5.36.2 '@typescript-eslint/scope-manager': 5.36.2
'@typescript-eslint/types': 5.36.2 '@typescript-eslint/types': 5.36.2
'@typescript-eslint/typescript-estree': 5.36[email protected].2 '@typescript-eslint/typescript-estree': 5.36[email protected].3
debug: 4.3.4 debug: 4.3.4
eslint: 8.23.0 eslint: 8.23.0
typescript: 4.8.2 typescript: 4.8.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: false dev: false
@ -870,7 +870,7 @@ packages:
'@typescript-eslint/visitor-keys': 5.36.2 '@typescript-eslint/visitor-keys': 5.36.2
dev: false 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==} resolution: {integrity: sha512-rPQtS5rfijUWLouhy6UmyNquKDPhQjKsaKH0WnY6hl/07lasj8gPaH2UD8xWkePn6SC+jW2i9c2DZVDnL+Dokw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
@ -880,12 +880,12 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/typescript-estree': 5.36[email protected].2 '@typescript-eslint/typescript-estree': 5.36[email protected].3
'@typescript-eslint/utils': 5.36.2_yqf6kl63nyoq5megxukfnom5rm '@typescript-eslint/utils': 5.36.2_itqs5654cmlnjraw6gjzqacppi
debug: 4.3.4 debug: 4.3.4
eslint: 8.23.0 eslint: 8.23.0
tsutils: 3.21[email protected].2 tsutils: 3.21[email protected].3
typescript: 4.8.2 typescript: 4.8.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: false dev: false
@ -895,7 +895,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: false dev: false
/@typescript-eslint/typescript-estree/[email protected].2: /@typescript-eslint/typescript-estree/[email protected].3:
resolution: {integrity: sha512-8fyH+RfbKc0mTspfuEjlfqA4YywcwQK2Amcf6TDOwaRLg7Vwdu4bZzyvBZp4bjt1RRjQ5MDnOZahxMrt2l5v9w==} resolution: {integrity: sha512-8fyH+RfbKc0mTspfuEjlfqA4YywcwQK2Amcf6TDOwaRLg7Vwdu4bZzyvBZp4bjt1RRjQ5MDnOZahxMrt2l5v9w==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
@ -910,13 +910,13 @@ packages:
globby: 11.1.0 globby: 11.1.0
is-glob: 4.0.3 is-glob: 4.0.3
semver: 7.3.7 semver: 7.3.7
tsutils: 3.21[email protected].2 tsutils: 3.21[email protected].3
typescript: 4.8.2 typescript: 4.8.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: false dev: false
/@typescript-eslint/utils/5.36.2_yqf6kl63nyoq5megxukfnom5rm: /@typescript-eslint/utils/5.36.2_itqs5654cmlnjraw6gjzqacppi:
resolution: {integrity: sha512-uNcopWonEITX96v9pefk9DC1bWMdkweeSsewJ6GeC7L6j2t0SJywisgkr9wUTtXk90fi2Eljj90HSHm3OGdGRg==} resolution: {integrity: sha512-uNcopWonEITX96v9pefk9DC1bWMdkweeSsewJ6GeC7L6j2t0SJywisgkr9wUTtXk90fi2Eljj90HSHm3OGdGRg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
@ -925,7 +925,7 @@ packages:
'@types/json-schema': 7.0.11 '@types/json-schema': 7.0.11
'@typescript-eslint/scope-manager': 5.36.2 '@typescript-eslint/scope-manager': 5.36.2
'@typescript-eslint/types': 5.36.2 '@typescript-eslint/types': 5.36.2
'@typescript-eslint/typescript-estree': 5.36[email protected].2 '@typescript-eslint/typescript-estree': 5.36[email protected].3
eslint: 8.23.0 eslint: 8.23.0
eslint-scope: 5.1.1 eslint-scope: 5.1.1
eslint-utils: 3.0[email protected] eslint-utils: 3.0[email protected]
@ -1084,8 +1084,8 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true hasBin: true
dependencies: dependencies:
caniuse-lite: 1.0.30001390 caniuse-lite: 1.0.30001393
electron-to-chromium: 1.4.242 electron-to-chromium: 1.4.246
node-releases: 2.0.6 node-releases: 2.0.6
update-browserslist-db: 1.0[email protected] update-browserslist-db: 1.0[email protected]
dev: true dev: true
@ -1105,8 +1105,8 @@ packages:
engines: {node: '>=6'} engines: {node: '>=6'}
dev: false dev: false
/caniuse-lite/1.0.30001390: /caniuse-lite/1.0.30001393:
resolution: {integrity: sha512-sS4CaUM+/+vqQUlCvCJ2WtDlV81aWtHhqeEVkLokVJJa3ViN4zDxAGfq9R8i1m90uGHxo99cy10Od+lvn3hf0g==} resolution: {integrity: sha512-N/od11RX+Gsk+1qY/jbPa0R6zJupEa0lxeBG598EbrtblxVCTJsQwbRBm6+V+rxpc5lHKdsXb9RY83cZIPLseA==}
dev: true dev: true
/chalk/2.4.2: /chalk/2.4.2:
@ -1183,7 +1183,7 @@ packages:
dev: false dev: false
/concat-map/0.0.1: /concat-map/0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
dev: false dev: false
/convert-source-map/1.8.0: /convert-source-map/1.8.0:
@ -1350,8 +1350,8 @@ packages:
resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==} resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==}
dev: false dev: false
/electron-to-chromium/1.4.242: /electron-to-chromium/1.4.246:
resolution: {integrity: sha512-nPdgMWtjjWGCtreW/2adkrB2jyHjClo9PtVhR6rW+oxa4E4Wom642Tn+5LslHP3XPL5MCpkn5/UEY60EXylNeQ==} resolution: {integrity: sha512-/wFCHUE+Hocqr/LlVGsuKLIw4P2lBWwFIDcNMDpJGzyIysQV4aycpoOitAs32FT94EHKnNqDR/CVZJFbXEufJA==}
dev: true dev: true
/emoji-regex/8.0.0: /emoji-regex/8.0.0:
@ -1709,7 +1709,7 @@ packages:
eslint-import-resolver-webpack: eslint-import-resolver-webpack:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/parser': 5.36.2_yqf6kl63nyoq5megxukfnom5rm '@typescript-eslint/parser': 5.36.2_itqs5654cmlnjraw6gjzqacppi
debug: 3.2.7 debug: 3.2.7
eslint: 8.23.0 eslint: 8.23.0
eslint-import-resolver-node: 0.3.6 eslint-import-resolver-node: 0.3.6
@ -1739,7 +1739,7 @@ packages:
'@typescript-eslint/parser': '@typescript-eslint/parser':
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/parser': 5.36.2_yqf6kl63nyoq5megxukfnom5rm '@typescript-eslint/parser': 5.36.2_itqs5654cmlnjraw6gjzqacppi
array-includes: 3.1.5 array-includes: 3.1.5
array.prototype.flat: 1.3.0 array.prototype.flat: 1.3.0
debug: 2.6.9 debug: 2.6.9
@ -1769,8 +1769,8 @@ packages:
eslint: 8.23.0 eslint: 8.23.0
dev: false dev: false
/eslint-plugin-react/7.31.7[email protected]: /eslint-plugin-react/7.31.8[email protected]:
resolution: {integrity: sha512-8NldBTeYp/kQoTV1uT0XF6HcmDqbgZ0lNPkN0wlRw8DJKXEnaWu+oh/6gt3xIhzvQ35wB2Y545fJhIbJSZ2NNw==} resolution: {integrity: sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw==}
engines: {node: '>=4'} engines: {node: '>=4'}
peerDependencies: peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
@ -1951,8 +1951,8 @@ packages:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: false dev: false
/fast-glob/3.2.11: /fast-glob/3.2.12:
resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
engines: {node: '>=8.6.0'} engines: {node: '>=8.6.0'}
dependencies: dependencies:
'@nodelib/fs.stat': 2.0.5 '@nodelib/fs.stat': 2.0.5
@ -2174,7 +2174,7 @@ packages:
dependencies: dependencies:
array-union: 2.1.0 array-union: 2.1.0
dir-glob: 3.0.1 dir-glob: 3.0.1
fast-glob: 3.2.11 fast-glob: 3.2.12
ignore: 5.2.0 ignore: 5.2.0
merge2: 1.4.1 merge2: 1.4.1
slash: 3.0.0 slash: 3.0.0
@ -2972,7 +2972,7 @@ packages:
dev: false dev: false
/quotemeta/0.0.0: /quotemeta/0.0.0:
resolution: {integrity: sha512-1XGObUh7RN5b58vKuAsrlfqT+Rc4vmw8N4pP9gFCq1GFlTdV0Ex/D2Ro1Drvrqj++HPi3ig0Np17XPslELeMRA==} resolution: {integrity: sha1-UdOgbuD81uO1AdvSiQQ1Gtelo4w=}
dev: true dev: true
/react-dom/[email protected]: /react-dom/[email protected]:
@ -3474,14 +3474,14 @@ packages:
resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==}
dev: true dev: true
/tsutils/[email protected].2: /tsutils/[email protected].3:
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
engines: {node: '>= 6'} engines: {node: '>= 6'}
peerDependencies: 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' 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: dependencies:
tslib: 1.14.1 tslib: 1.14.1
typescript: 4.8.2 typescript: 4.8.3
dev: false dev: false
/type-check/0.4.0: /type-check/0.4.0:
@ -3496,8 +3496,8 @@ packages:
engines: {node: '>=10'} engines: {node: '>=10'}
dev: false dev: false
/typescript/4.8.2: /typescript/4.8.3:
resolution: {integrity: sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==} resolution: {integrity: sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==}
engines: {node: '>=4.2.0'} engines: {node: '>=4.2.0'}
hasBin: true hasBin: true

2
src/components/Dialog/PeersDialog.tsx

@ -94,7 +94,7 @@ export const PeersDialog = ({
onClick={() => { onClick={() => {
void connection?.sendPacket( void connection?.sendPacket(
Protobuf.AdminMessage.toBinary({ Protobuf.AdminMessage.toBinary({
variant: { payloadVariant: {
oneofKind: "getConfigRequest", oneofKind: "getConfigRequest",
getConfigRequest: getConfigRequest:
Protobuf.AdminMessage_ConfigType.LORA_CONFIG, Protobuf.AdminMessage_ConfigType.LORA_CONFIG,

4
src/components/PageComponents/Config/Bluetooth.tsx

@ -50,7 +50,7 @@ export const Bluetooth = (): JSX.Element => {
const pairingMode = useWatch({ const pairingMode = useWatch({
control, control,
name: "mode", name: "mode",
defaultValue: Protobuf.Config_BluetoothConfig_PairingMode.RandomPin, defaultValue: Protobuf.Config_BluetoothConfig_PairingMode.RANDOM_PIN,
}); });
return ( return (
@ -82,7 +82,7 @@ export const Bluetooth = (): JSX.Element => {
<TextInputField <TextInputField
display={ display={
pairingMode !== Protobuf.Config_BluetoothConfig_PairingMode.FixedPin pairingMode !== Protobuf.Config_BluetoothConfig_PairingMode.FIXED_PIN
? "none" ? "none"
: "block" : "block"
} }

15
src/components/PageComponents/Config/Device.tsx

@ -1,13 +1,7 @@
import type React from "react"; import type React from "react";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { import { FormField, SelectField, Switch, toaster } from "evergreen-ui";
FormField,
SelectField,
Switch,
TextInputField,
toaster,
} from "evergreen-ui";
import { Controller, useForm } from "react-hook-form"; import { Controller, useForm } from "react-hook-form";
import { DeviceValidation } from "@app/validation/config/device.js"; import { DeviceValidation } from "@app/validation/config/device.js";
@ -105,13 +99,6 @@ export const Device = (): JSX.Element => {
)} )}
/> />
</FormField> </FormField>
<TextInputField
label="NTP Server"
description="This is a description."
isInvalid={!!errors.ntpServer?.message}
validationMessage={errors.ntpServer?.message}
{...register("ntpServer")}
/>
</Form> </Form>
); );
}; };

51
src/components/PageComponents/Config/WiFi.tsx → src/components/PageComponents/Config/Network.tsx

@ -11,13 +11,13 @@ import {
import { Controller, useForm, useWatch } from "react-hook-form"; import { Controller, useForm, useWatch } from "react-hook-form";
import { renderOptions } from "@app/core/utils/selectEnumOptions.js"; 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 { Form } from "@components/form/Form";
import { useDevice } from "@core/providers/useDevice.js"; import { useDevice } from "@core/providers/useDevice.js";
import { classValidatorResolver } from "@hookform/resolvers/class-validator"; import { classValidatorResolver } from "@hookform/resolvers/class-validator";
import { Protobuf } from "@meshtastic/meshtasticjs"; import { Protobuf } from "@meshtastic/meshtasticjs";
export const WiFi = (): JSX.Element => { export const Network = (): JSX.Element => {
const { config, connection } = useDevice(); const { config, connection } = useDevice();
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const { const {
@ -26,32 +26,32 @@ export const WiFi = (): JSX.Element => {
formState: { errors, isDirty }, formState: { errors, isDirty },
control, control,
reset, reset,
} = useForm<WiFiValidation>({ } = useForm<NetworkValidation>({
defaultValues: config.wifi, defaultValues: config.network,
resolver: classValidatorResolver(WiFiValidation), resolver: classValidatorResolver(NetworkValidation),
}); });
const wifiEnabled = useWatch({ const wifiEnabled = useWatch({
control, control,
name: "enabled", name: "wifiEnabled",
defaultValue: false, defaultValue: false,
}); });
useEffect(() => { useEffect(() => {
reset(config.wifi); reset(config.network);
}, [reset, config.wifi]); }, [reset, config.network]);
const onSubmit = handleSubmit((data) => { const onSubmit = handleSubmit((data) => {
setLoading(true); setLoading(true);
void connection?.setConfig( void connection?.setConfig(
{ {
payloadVariant: { payloadVariant: {
oneofKind: "wifi", oneofKind: "network",
wifi: data, network: data,
}, },
}, },
async () => { async () => {
toaster.success("Successfully updated WiFi config"); toaster.success("Successfully updated Network config");
reset({ ...data }); reset({ ...data });
setLoading(false); setLoading(false);
await Promise.resolve(); await Promise.resolve();
@ -63,11 +63,11 @@ export const WiFi = (): JSX.Element => {
<FormField <FormField
label="WiFi Enabled" label="WiFi Enabled"
description="Description" description="Description"
isInvalid={!!errors.enabled?.message} isInvalid={!!errors.wifiEnabled?.message}
validationMessage={errors.enabled?.message} validationMessage={errors.wifiEnabled?.message}
> >
<Controller <Controller
name="enabled" name="wifiEnabled"
control={control} control={control}
render={({ field: { value, ...field } }) => ( render={({ field: { value, ...field } }) => (
<Switch height={24} marginLeft="auto" checked={value} {...field} /> <Switch height={24} marginLeft="auto" checked={value} {...field} />
@ -77,24 +77,31 @@ export const WiFi = (): JSX.Element => {
<SelectField <SelectField
label="WiFi Mode" label="WiFi Mode"
description="This is a description." description="This is a description."
{...register("mode", { valueAsNumber: true })} {...register("wifiMode", { valueAsNumber: true })}
> >
{renderOptions(Protobuf.Config_WiFiConfig_WiFiMode)} {renderOptions(Protobuf.Config_NetworkConfig_WiFiMode)}
</SelectField> </SelectField>
<TextInputField <TextInputField
label="SSID" label="SSID"
description="This is a description." description="This is a description."
isInvalid={!!errors.ssid?.message} isInvalid={!!errors.wifiSsid?.message}
validationMessage={errors.ssid?.message} validationMessage={errors.wifiSsid?.message}
{...register("ssid")} {...register("wifiSsid")}
/> />
<TextInputField <TextInputField
label="PSK" label="PSK"
type="password" type="password"
description="This is a description." description="This is a description."
isInvalid={!!errors.psk?.message} isInvalid={!!errors.wifiPsk?.message}
validationMessage={errors.psk?.message} validationMessage={errors.wifiPsk?.message}
{...register("psk")} {...register("wifiPsk")}
/>
<TextInputField
label="NTP Server"
description="This is a description."
isInvalid={!!errors.ntpServer?.message}
validationMessage={errors.ntpServer?.message}
{...register("ntpServer")}
/> />
</Form> </Form>
); );

2
src/components/PageComponents/Config/Position.tsx

@ -144,7 +144,7 @@ export const Position = (): JSX.Element => {
.filter( .filter(
(value) => (value) =>
parseInt(value[0]) !== parseInt(value[0]) !==
Protobuf.Config_PositionConfig_PositionFlags.POS_UNDEFINED Protobuf.Config_PositionConfig_PositionFlags.UNSET
) )
.map((value) => { .map((value) => {
return { return {

13
src/components/PageComponents/Config/Power.tsx

@ -1,15 +1,13 @@
import type React from "react"; import type React from "react";
import { useEffect, useState } 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 { Controller, useForm } from "react-hook-form";
import { PowerValidation } from "@app/validation/config/power.js"; import { PowerValidation } from "@app/validation/config/power.js";
import { Form } from "@components/form/Form"; import { Form } from "@components/form/Form";
import { useDevice } from "@core/providers/useDevice.js"; import { useDevice } from "@core/providers/useDevice.js";
import { renderOptions } from "@core/utils/selectEnumOptions.js";
import { classValidatorResolver } from "@hookform/resolvers/class-validator"; import { classValidatorResolver } from "@hookform/resolvers/class-validator";
import { Protobuf } from "@meshtastic/meshtasticjs";
export const Power = (): JSX.Element => { export const Power = (): JSX.Element => {
const { config, connection } = useDevice(); const { config, connection } = useDevice();
@ -47,15 +45,6 @@ export const Power = (): JSX.Element => {
}); });
return ( return (
<Form loading={loading} dirty={isDirty} onSubmit={onSubmit}> <Form loading={loading} dirty={isDirty} onSubmit={onSubmit}>
<SelectField
label="Charge current"
description="This is a description."
isInvalid={!!errors.chargeCurrent?.message}
validationMessage={errors.chargeCurrent?.message}
{...register("chargeCurrent", { valueAsNumber: true })}
>
{renderOptions(Protobuf.Config_PowerConfig_ChargeCurrent)}
</SelectField>
<TextInputField <TextInputField
label="Shutdown on battery delay" label="Shutdown on battery delay"
description="This is a description." description="This is a description."

6
src/core/stores/deviceStore.ts

@ -140,8 +140,8 @@ export const useDeviceStore = create<DeviceState>((set, get) => ({
case "power": case "power":
device.config.power = config.payloadVariant.power; device.config.power = config.payloadVariant.power;
break; break;
case "wifi": case "network":
device.config.wifi = config.payloadVariant.wifi; device.config.network = config.payloadVariant.network;
break; break;
case "display": case "display":
device.config.display = config.payloadVariant.display; device.config.display = config.payloadVariant.display;
@ -150,7 +150,7 @@ export const useDeviceStore = create<DeviceState>((set, get) => ({
device.config.lora = config.payloadVariant.lora; device.config.lora = config.payloadVariant.lora;
device.regionUnset = device.regionUnset =
config.payloadVariant.lora.region === config.payloadVariant.lora.region ===
Protobuf.Config_LoRaConfig_RegionCode.Unset; Protobuf.Config_LoRaConfig_RegionCode.UNSET;
break; break;
} }
} }

6
src/pages/Config/DeviceConfig.tsx

@ -3,6 +3,7 @@ import { useState } from "react";
import { Pane, Tab, Tablist } from "evergreen-ui"; 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 { Bluetooth } from "@components/PageComponents/Config/Bluetooth.js";
import { Device } from "@components/PageComponents/Config/Device.js"; import { Device } from "@components/PageComponents/Config/Device.js";
import { Display } from "@components/PageComponents/Config/Display.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 { Position } from "@components/PageComponents/Config/Position.js";
import { Power } from "@components/PageComponents/Config/Power.js"; import { Power } from "@components/PageComponents/Config/Power.js";
import { User } from "@components/PageComponents/Config/User.js"; import { User } from "@components/PageComponents/Config/User.js";
import { WiFi } from "@components/PageComponents/Config/WiFi.js";
import { useDevice } from "@core/providers/useDevice.js"; import { useDevice } from "@core/providers/useDevice.js";
export const DeviceConfig = (): JSX.Element => { export const DeviceConfig = (): JSX.Element => {
@ -35,8 +35,8 @@ export const DeviceConfig = (): JSX.Element => {
element: Power, element: Power,
}, },
{ {
label: "WiFi", label: "Network",
element: WiFi, element: Network,
disabled: !hardware.hasWifi, disabled: !hardware.hasWifi,
}, },
{ {

5
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"; import { Protobuf } from "@meshtastic/meshtasticjs";
@ -14,7 +14,4 @@ export class DeviceValidation implements Protobuf.Config_DeviceConfig {
@IsBoolean() @IsBoolean()
debugLogEnabled: boolean; debugLogEnabled: boolean;
@Length(2, 30)
ntpServer: string;
} }

2
src/validation/config/lora.ts

@ -15,7 +15,7 @@ export class LoRaValidation implements Protobuf.Config_LoRaConfig {
bandwidth: number; bandwidth: number;
@IsInt() @IsInt()
@Min(7) // @Min(7)
@Max(12) @Max(12)
spreadFactor: number; spreadFactor: number;

20
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;
}

7
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 { export class PowerValidation implements Protobuf.Config_PowerConfig {
@IsEnum(Protobuf.Config_PowerConfig_ChargeCurrent)
chargeCurrent: Protobuf.Config_PowerConfig_ChargeCurrent;
@IsBoolean() @IsBoolean()
isPowerSaving: boolean; isPowerSaving: boolean;

17
src/validation/config/wifi.ts

@ -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;
}
Loading…
Cancel
Save