Browse Source

Cleanup connection logic

pull/21/head
Sacha Weatherstone 4 years ago
parent
commit
1202345d69
  1. 114
      pnpm-lock.yaml
  2. 3
      src/components/connection/HTTP.tsx
  3. 11
      src/core/connection.ts
  4. 6
      src/core/slices/appSlice.ts
  5. 23
      src/core/slices/meshtasticSlice.ts

114
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[email protected][email protected]
'@tippyjs/react': 4.2[email protected][email protected]
base64-js: 1.5.1
@ -59,7 +59,7 @@ dependencies:
react: 17.0.2
react-dom: 17.0[email protected]
react-error-boundary: 3.1[email protected]
react-flow-renderer: 10.0.0-next.48[email protected][email protected]
react-flow-renderer: 10.0.0-next.51[email protected][email protected]
react-hook-form: 7.27[email protected]
react-icons: 4.3[email protected]
react-json-pretty: 2.2[email protected][email protected]
@ -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[email protected].7
autoprefixer: 10.4[email protected].8
gzipper: 7.0.0
postcss: 8.4.7
postcss: 8.4.8
rollup-plugin-visualizer: 5.6.0
tailwindcss: 3.0[email protected]
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_@[email protected]+rollup@2.69.0:
/@rollup/plugin-babel/5.3.1_@[email protected]+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/[email protected].7:
/autoprefixer/[email protected].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/[email protected][email protected]:
@ -4476,14 +4476,14 @@ packages:
tslib: 2.3.1
dev: false
/postcss-js/[email protected].7:
/postcss-js/[email protected].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/[email protected].7:
/postcss-nested/[email protected].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[email protected][email protected]:
resolution: {integrity: sha512-Qig+8PyIfBJOTr8wnH4ltxQ34cc7/2J0uKLMakS7pu1BqwEQBfm9pzmh0pcQxrPcT/0jtnM6mFvDuofU76xjYQ==}
/react-flow-renderer/10.0.0-next.51[email protected][email protected]:
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[email protected].7
autoprefixer: 10.4[email protected].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[email protected].7
postcss: 8.4.8
postcss-js: 4.0[email protected].8
postcss-load-config: 3.1.3
postcss-nested: 5.0[email protected].7
postcss-nested: 5.0[email protected].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_@[email protected]
'@babel/runtime': 7.17.2
'@rollup/plugin-babel': 5.3.1_@[email protected]+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_@[email protected]+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

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

11
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<void> => {
await connection.disconnect();
@ -53,6 +50,8 @@ export const setConnection = async (conn: connType): Promise<void> => {
}
registerListeners();
const connectionParams = store.getState().app.connectionParams;
console.log(connectionParams);
switch (conn) {
case connType.HTTP:
await connection.connect(connectionParams.HTTP);

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

23
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<boolean>) => {
state.hostOverrideEnabled = action.payload;
localStorage.setItem('hostOverrideEnabled', String(action.payload));
if (state.hostOverrideEnabled !== action.payload) {
// connection.disconnect();
}
},
setHostOverride: (state, action: PayloadAction<string>) => {
state.hostOverride = action.payload;
localStorage.setItem('hostOverride', action.payload);
if (state.hostOverride !== action.payload) {
// connection.disconnect();
}
},
addChat: (state, action: PayloadAction<number>) => {
state.chats[action.payload] = {
messages: [],
@ -303,8 +282,6 @@ export const {
addMessage,
ackMessage,
updateLastInteraction,
setHostOverrideEnabled,
setHostOverride,
addChat,
resetState,
} = meshtasticSlice.actions;

Loading…
Cancel
Save