diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e2af5631..4af903fd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,7 +4,7 @@ specifiers: '@emeraldpay/hashicon-react': ^0.5.2 '@hookform/devtools': ^4.0.2 '@meshtastic/eslint-config': ^1.0.6 - '@meshtastic/meshtasticjs': ^0.6.50 + '@meshtastic/meshtasticjs': ^0.6.51 '@reduxjs/toolkit': ^1.8.0 '@tippyjs/react': ^4.2.6 '@types/mapbox-gl': ^2.6.3 @@ -18,12 +18,12 @@ specifiers: framer-motion: ^6.2.8 gzipper: ^7.0.0 mapbox-gl: ^2.7.0 - postcss: ^8.4.7 + postcss: ^8.4.8 prettier: ^2.5.1 react: ^17.0.2 react-dom: ^17.0.2 react-error-boundary: ^3.1.4 - react-flow-renderer: ^10.0.0-next.48 + react-flow-renderer: ^10.0.0-next.51 react-hook-form: ^7.27.1 react-icons: ^4.3.1 react-json-pretty: ^2.2.0 @@ -49,7 +49,7 @@ specifiers: dependencies: '@emeraldpay/hashicon-react': 0.5.2 '@meshtastic/eslint-config': 1.0.6 - '@meshtastic/meshtasticjs': 0.6.50 + '@meshtastic/meshtasticjs': 0.6.51 '@reduxjs/toolkit': 1.8.0_react-redux@7.2.6+react@17.0.2 '@tippyjs/react': 4.2.6_react-dom@17.0.2+react@17.0.2 base64-js: 1.5.1 @@ -59,7 +59,7 @@ dependencies: react: 17.0.2 react-dom: 17.0.2_react@17.0.2 react-error-boundary: 3.1.4_react@17.0.2 - react-flow-renderer: 10.0.0-next.48_react-dom@17.0.2+react@17.0.2 + react-flow-renderer: 10.0.0-next.51_react-dom@17.0.2+react@17.0.2 react-hook-form: 7.27.1_react@17.0.2 react-icons: 4.3.1_react@17.0.2 react-json-pretty: 2.2.0_react-dom@17.0.2+react@17.0.2 @@ -81,9 +81,9 @@ devDependencies: '@types/w3c-web-serial': 1.0.2 '@types/web-bluetooth': 0.0.12 '@vitejs/plugin-react': 1.2.0 - autoprefixer: 10.4.2_postcss@8.4.7 + autoprefixer: 10.4.2_postcss@8.4.8 gzipper: 7.0.0 - postcss: 8.4.7 + postcss: 8.4.8 rollup-plugin-visualizer: 5.6.0 tailwindcss: 3.0.23_autoprefixer@10.4.2 tar: 6.1.11 @@ -189,7 +189,7 @@ packages: '@babel/compat-data': 7.17.0 '@babel/core': 7.17.5 '@babel/helper-validator-option': 7.16.7 - browserslist: 4.19.3 + browserslist: 4.20.0 semver: 6.3.0 dev: true @@ -1631,8 +1631,8 @@ packages: - supports-color dev: false - /@meshtastic/meshtasticjs/0.6.50: - resolution: {integrity: sha512-zH1pglJ8FdeBKbI7zgi2ulgkhC03Jb7rW8q4fBm/etjRUTR2NNExlhpIdsYQQmLxX+3WywXEts/jL+2kspF8iw==} + /@meshtastic/meshtasticjs/0.6.51: + resolution: {integrity: sha512-4FMdtd0yMdy1chOo5KHBEM4H0AHcLAOW8FR/mPsLcfask9Ey2DIJ5CCNowx/WEjyGCTyAPGwJrgnEMZmSchYIA==} dependencies: '@meshtastic/eslint-config': 1.0.6 '@protobuf-ts/runtime': 2.2.2 @@ -1687,7 +1687,7 @@ packages: reselect: 4.1.5 dev: false - /@rollup/plugin-babel/5.3.1_@babel+core@7.17.5+rollup@2.69.0: + /@rollup/plugin-babel/5.3.1_@babel+core@7.17.5+rollup@2.70.0: resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} peerDependencies: @@ -1700,36 +1700,36 @@ packages: dependencies: '@babel/core': 7.17.5 '@babel/helper-module-imports': 7.16.7 - '@rollup/pluginutils': 3.1.0_rollup@2.69.0 - rollup: 2.69.0 + '@rollup/pluginutils': 3.1.0_rollup@2.70.0 + rollup: 2.70.0 dev: true - /@rollup/plugin-node-resolve/11.2.1_rollup@2.69.0: + /@rollup/plugin-node-resolve/11.2.1_rollup@2.70.0: resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} engines: {node: '>= 10.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.69.0 + '@rollup/pluginutils': 3.1.0_rollup@2.70.0 '@types/resolve': 1.17.1 builtin-modules: 3.2.0 deepmerge: 4.2.2 is-module: 1.0.0 resolve: 1.22.0 - rollup: 2.69.0 + rollup: 2.70.0 dev: true - /@rollup/plugin-replace/2.4.2_rollup@2.69.0: + /@rollup/plugin-replace/2.4.2_rollup@2.70.0: resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.69.0 + '@rollup/pluginutils': 3.1.0_rollup@2.70.0 magic-string: 0.25.9 - rollup: 2.69.0 + rollup: 2.70.0 dev: true - /@rollup/pluginutils/3.1.0_rollup@2.69.0: + /@rollup/pluginutils/3.1.0_rollup@2.70.0: resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: @@ -1738,7 +1738,7 @@ packages: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 - rollup: 2.69.0 + rollup: 2.70.0 dev: true /@rollup/pluginutils/4.1.2: @@ -2242,19 +2242,19 @@ packages: engines: {node: '>= 4.0.0'} dev: true - /autoprefixer/10.4.2_postcss@8.4.7: + /autoprefixer/10.4.2_postcss@8.4.8: resolution: {integrity: sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.19.3 + browserslist: 4.20.0 caniuse-lite: 1.0.30001313 - fraction.js: 4.1.3 + fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.7 + postcss: 8.4.8 postcss-value-parser: 4.2.0 dev: true @@ -2344,13 +2344,13 @@ packages: dependencies: fill-range: 7.0.1 - /browserslist/4.19.3: - resolution: {integrity: sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==} + /browserslist/4.20.0: + resolution: {integrity: sha512-bnpOoa+DownbciXj0jVGENf8VYQnE2LNWomhYuCsMmmx9Jd9lwq0WXODuwpSsp8AVdKM2/HorrzxAfbKvWTByQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: caniuse-lite: 1.0.30001313 - electron-to-chromium: 1.4.75 + electron-to-chromium: 1.4.76 escalade: 3.1.1 node-releases: 2.0.2 picocolors: 1.0.0 @@ -2512,7 +2512,7 @@ packages: /core-js-compat/3.21.1: resolution: {integrity: sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==} dependencies: - browserslist: 4.19.3 + browserslist: 4.20.0 semver: 7.0.0 dev: true @@ -2767,8 +2767,8 @@ packages: jake: 10.8.2 dev: true - /electron-to-chromium/1.4.75: - resolution: {integrity: sha512-LxgUNeu3BVU7sXaKjUDD9xivocQLxFtq6wgERrutdY/yIOps3ODOZExK1jg8DTEg4U8TUCb5MLGeWFOYuxjF3Q==} + /electron-to-chromium/1.4.76: + resolution: {integrity: sha512-3Vftv7cenJtQb+k00McEBZ2vVmZ/x+HEF7pcZONZIkOsESqAqVuACmBxMv0JhzX7u0YltU0vSqRqgBSTAhFUjA==} dev: true /emoji-regex/8.0.0: @@ -3453,8 +3453,8 @@ packages: resolution: {integrity: sha1-C+4AUBiusmDQo6865ljdATbsG5k=} dev: true - /fraction.js/4.1.3: - resolution: {integrity: sha512-pUHWWt6vHzZZiQJcM6S/0PXfS+g6FM4BF5rj9wZyreivhQPdsh5PpE25VtSNxq80wHS5RfY51Ii+8Z0Zl/pmzg==} + /fraction.js/4.2.0: + resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: true /framer-motion/6.2.8_react-dom@17.0.2+react@17.0.2: @@ -4476,14 +4476,14 @@ packages: tslib: 2.3.1 dev: false - /postcss-js/4.0.0_postcss@8.4.7: + /postcss-js/4.0.0_postcss@8.4.8: resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.3.3 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.7 + postcss: 8.4.8 dev: true /postcss-load-config/3.1.3: @@ -4499,13 +4499,13 @@ packages: yaml: 1.10.2 dev: true - /postcss-nested/5.0.6_postcss@8.4.7: + /postcss-nested/5.0.6_postcss@8.4.8: resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.7 + postcss: 8.4.8 postcss-selector-parser: 6.0.9 dev: true @@ -4521,8 +4521,8 @@ packages: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true - /postcss/8.4.7: - resolution: {integrity: sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A==} + /postcss/8.4.8: + resolution: {integrity: sha512-2tXEqGxrjvAO6U+CJzDL2Fk2kPHTv1jQsYkSoMeOis2SsYaXRO2COxTdQp99cYvif9JTXaAk9lYGc3VhJt7JPQ==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.1 @@ -4646,8 +4646,8 @@ packages: react: 17.0.2 dev: false - /react-flow-renderer/10.0.0-next.48_react-dom@17.0.2+react@17.0.2: - resolution: {integrity: sha512-Qig+8PyIfBJOTr8wnH4ltxQ34cc7/2J0uKLMakS7pu1BqwEQBfm9pzmh0pcQxrPcT/0jtnM6mFvDuofU76xjYQ==} + /react-flow-renderer/10.0.0-next.51_react-dom@17.0.2+react@17.0.2: + resolution: {integrity: sha512-ntxdXZ58H0Be6fLUT3PB5b0UvzXqL48ZcChlFlwVb+QMsuJACEU44VbxXhcruUmzBb50AkPwWyQakcp0/FcVRw==} engines: {node: '>=12'} peerDependencies: react: 16 || 17 @@ -4960,14 +4960,14 @@ packages: magic-string: 0.25.9 dev: true - /rollup-plugin-terser/7.0.2_rollup@2.69.0: + /rollup-plugin-terser/7.0.2_rollup@2.70.0: resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} peerDependencies: rollup: ^2.0.0 dependencies: '@babel/code-frame': 7.16.7 jest-worker: 26.6.2 - rollup: 2.69.0 + rollup: 2.70.0 serialize-javascript: 4.0.0 terser: 5.12.0 dev: true @@ -4985,8 +4985,8 @@ packages: yargs: 17.3.1 dev: true - /rollup/2.69.0: - resolution: {integrity: sha512-kjER91tHyek8gAkuz7+558vSnTQ+pITEok1P0aNOS45ZXyngaqPsXJmSel4QPQnJo7EJMjXUU1/GErWkWiKORg==} + /rollup/2.70.0: + resolution: {integrity: sha512-iEzYw+syFxQ0X9RefVwhr8BA2TNJsTaX8L8dhyeyMECDbmiba+8UQzcu+xZdji0+JQ+s7kouQnw+9Oz5M19XKA==} engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: @@ -5305,7 +5305,7 @@ packages: autoprefixer: ^10.0.2 dependencies: arg: 5.0.1 - autoprefixer: 10.4.2_postcss@8.4.7 + autoprefixer: 10.4.2_postcss@8.4.8 chalk: 4.1.2 chokidar: 3.5.3 color-name: 1.1.4 @@ -5318,10 +5318,10 @@ packages: is-glob: 4.0.3 normalize-path: 3.0.0 object-hash: 2.2.0 - postcss: 8.4.7 - postcss-js: 4.0.0_postcss@8.4.7 + postcss: 8.4.8 + postcss-js: 4.0.0_postcss@8.4.8 postcss-load-config: 3.1.3 - postcss-nested: 5.0.6_postcss@8.4.7 + postcss-nested: 5.0.6_postcss@8.4.8 postcss-selector-parser: 6.0.9 postcss-value-parser: 4.2.0 quick-lru: 5.1.1 @@ -5627,7 +5627,7 @@ packages: debug: 4.3.3 fast-glob: 3.2.11 pretty-bytes: 5.6.0 - rollup: 2.69.0 + rollup: 2.70.0 vite: 2.8.6 workbox-build: 6.5.1 workbox-window: 6.5.1 @@ -5653,9 +5653,9 @@ packages: optional: true dependencies: esbuild: 0.14.25 - postcss: 8.4.7 + postcss: 8.4.8 resolve: 1.22.0 - rollup: 2.69.0 + rollup: 2.70.0 optionalDependencies: fsevents: 2.3.2 dev: true @@ -5752,9 +5752,9 @@ packages: '@babel/core': 7.17.5 '@babel/preset-env': 7.16.11_@babel+core@7.17.5 '@babel/runtime': 7.17.2 - '@rollup/plugin-babel': 5.3.1_@babel+core@7.17.5+rollup@2.69.0 - '@rollup/plugin-node-resolve': 11.2.1_rollup@2.69.0 - '@rollup/plugin-replace': 2.4.2_rollup@2.69.0 + '@rollup/plugin-babel': 5.3.1_@babel+core@7.17.5+rollup@2.70.0 + '@rollup/plugin-node-resolve': 11.2.1_rollup@2.70.0 + '@rollup/plugin-replace': 2.4.2_rollup@2.70.0 '@surma/rollup-plugin-off-main-thread': 2.2.3 ajv: 8.10.0 common-tags: 1.8.2 @@ -5763,8 +5763,8 @@ packages: glob: 7.2.0 lodash: 4.17.21 pretty-bytes: 5.6.0 - rollup: 2.69.0 - rollup-plugin-terser: 7.0.2_rollup@2.69.0 + rollup: 2.70.0 + rollup-plugin-terser: 7.0.2_rollup@2.70.0 source-map: 0.8.0-beta.0 stringify-object: 3.3.0 strip-comments: 2.0.1 diff --git a/src/components/connection/HTTP.tsx b/src/components/connection/HTTP.tsx index 1d701b71..a54053a2 100644 --- a/src/components/connection/HTTP.tsx +++ b/src/components/connection/HTTP.tsx @@ -36,6 +36,9 @@ export const HTTP = ({ connecting }: HTTPProps): JSX.Element => { }); const onSubmit = handleSubmit(async (data) => { + if (data.ip) { + localStorage.setItem('connectionUrl', data.ip); + } dispatch( setConnectionParams({ type: connType.HTTP, diff --git a/src/core/connection.ts b/src/core/connection.ts index add354fd..32b1032a 100644 --- a/src/core/connection.ts +++ b/src/core/connection.ts @@ -30,12 +30,9 @@ type connectionType = IBLEConnection | IHTTPConnection | ISerialConnection; export let connection: connectionType = new IHTTPConnection(); -const state = store.getState().meshtastic; -export const connectionUrl = state.hostOverrideEnabled - ? state.hostOverride - : import.meta.env.PROD - ? window.location.hostname - : (import.meta.env.VITE_PUBLIC_DEVICE_IP as string) ?? 'meshtastic.local'; +const appState = store.getState().app; + +export const connectionUrl = appState.connectionParams.HTTP.address; export const setConnection = async (conn: connType): Promise => { await connection.disconnect(); @@ -53,6 +50,8 @@ export const setConnection = async (conn: connType): Promise => { } registerListeners(); const connectionParams = store.getState().app.connectionParams; + console.log(connectionParams); + switch (conn) { case connType.HTTP: await connection.connect(connectionParams.HTTP); diff --git a/src/core/slices/appSlice.ts b/src/core/slices/appSlice.ts index 43942144..4f568d9e 100644 --- a/src/core/slices/appSlice.ts +++ b/src/core/slices/appSlice.ts @@ -35,7 +35,11 @@ const initialState: AppState = { connectionParams: { BLE: {}, HTTP: { - address: 'http://meshtastic.local/', + address: + localStorage.getItem('connectionUrl') ?? import.meta.env.PROD + ? window.location.hostname + : (import.meta.env.VITE_PUBLIC_DEVICE_IP as string) ?? + 'meshtastic.local', tls: false, receiveBatchRequests: false, fetchInterval: 2000, diff --git a/src/core/slices/meshtasticSlice.ts b/src/core/slices/meshtasticSlice.ts index 5b2354d0..0328d608 100644 --- a/src/core/slices/meshtasticSlice.ts +++ b/src/core/slices/meshtasticSlice.ts @@ -55,8 +55,6 @@ interface MeshtasticState { ready: boolean; nodes: Node[]; radio: Radio; - hostOverrideEnabled: boolean; - hostOverride: string; chats: ChatEntries; logs: Types.LogEventPacket[]; } @@ -71,11 +69,6 @@ const initialState: MeshtasticState = { preferences: Protobuf.RadioConfig_UserPreferences.create(), hardware: Protobuf.MyNodeInfo.create(), }, - //todo implement - // connectionMethod: localStorage.getItem('connectionMethod'), - hostOverrideEnabled: - localStorage.getItem('hostOverrideEnabled') === 'true' ?? false, - hostOverride: localStorage.getItem('hostOverride') ?? '', chats: {}, logs: [], }; @@ -257,20 +250,6 @@ export const meshtasticSlice = createSlice({ node.lastHeard = action.payload.time; } }, - setHostOverrideEnabled: (state, action: PayloadAction) => { - state.hostOverrideEnabled = action.payload; - localStorage.setItem('hostOverrideEnabled', String(action.payload)); - if (state.hostOverrideEnabled !== action.payload) { - // connection.disconnect(); - } - }, - setHostOverride: (state, action: PayloadAction) => { - state.hostOverride = action.payload; - localStorage.setItem('hostOverride', action.payload); - if (state.hostOverride !== action.payload) { - // connection.disconnect(); - } - }, addChat: (state, action: PayloadAction) => { state.chats[action.payload] = { messages: [], @@ -303,8 +282,6 @@ export const { addMessage, ackMessage, updateLastInteraction, - setHostOverrideEnabled, - setHostOverride, addChat, resetState, } = meshtasticSlice.actions;