Browse Source

feat: added disconnect method to core lib (#712)

pull/716/head
Dan Ditomaso 11 months ago
committed by GitHub
parent
commit
5fb5693792
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 147
      deno.lock
  2. 7
      packages/core/src/meshDevice.ts
  3. 1
      packages/core/src/types.ts
  4. 3
      packages/web/public/i18n/locales/en/commandPalette.json
  5. 10
      packages/web/src/components/CommandPalette/index.tsx

147
deno.lock

@ -50,13 +50,14 @@
"npm:@tanstack/react-router@^1.125.4": "[email protected][email protected][email protected]",
"npm:@tanstack/router-cli@^1.125.4": "1.125.4",
"npm:@tanstack/router-devtools@^1.125.4": "1.125.6_@[email protected][email protected][email protected][email protected][email protected][email protected][email protected]",
"npm:@tanstack/router-plugin@^1.125.5": "1.125.6_@[email protected][email protected][email protected][email protected][email protected]__@[email protected][email protected]_@[email protected][email protected][email protected][email protected]_@[email protected]",
"npm:@tanstack/router-plugin@^1.125.5": "1.125.6_@[email protected][email protected][email protected][email protected][email protected]__@[email protected][email protected]_@[email protected][email protected][email protected][email protected]_@[email protected]_@[email protected]",
"npm:@testing-library/jest-dom@^6.6.3": "6.6.3",
"npm:@testing-library/react@^16.3.0": "16.3.0_@[email protected]_@[email protected]_@[email protected]__@[email protected][email protected][email protected][email protected]",
"npm:@testing-library/user-event@^14.6.1": "14.6.1_@[email protected]",
"npm:@turf/turf@^7.2.0": "7.2.0",
"npm:@types/chrome@^0.0.329": "0.0.329",
"npm:@types/js-cookie@^3.0.6": "3.0.6",
"npm:@types/node@*": "22.15.15",
"npm:@types/node@^22.13.10": "22.16.0",
"npm:@types/node@^24.0.10": "24.0.10",
"npm:@types/react-dom@^19.1.6": "19.1.6_@[email protected]",
@ -68,7 +69,7 @@
"npm:@types/web-bluetooth@*": "0.0.20",
"npm:@types/web-bluetooth@^0.0.20": "0.0.20",
"npm:@types/web-bluetooth@^0.0.21": "0.0.21",
"npm:@vitejs/plugin-react@^4.6.0": "[email protected]__@[email protected][email protected]_@[email protected]_@[email protected]",
"npm:@vitejs/plugin-react@^4.6.0": "[email protected]__@[email protected][email protected]_@[email protected]_@[email protected]_@[email protected]",
"npm:autoprefixer@^10.4.21": "[email protected]",
"npm:base64-js@^1.5.1": "1.5.1",
"npm:class-variance-authority@~0.7.1": "0.7.1",
@ -104,8 +105,8 @@
"npm:testing-library@^0.0.2": "0.0.2_@[email protected]__@[email protected][email protected][email protected][email protected]_@[email protected][email protected][email protected]",
"npm:tslog@^4.9.3": "4.9.3",
"npm:typescript@^5.8.3": "5.8.3",
"npm:vite@7": "7.0.2_@[email protected][email protected]",
"npm:vitest@^3.2.4": "3.2.4_@[email protected][email protected][email protected]__@[email protected][email protected]",
"npm:vite@7": "7.0.2_@[email protected][email protected]_@[email protected]",
"npm:vitest@^3.2.4": "3.2.4_@[email protected][email protected][email protected]__@[email protected][email protected]_@[email protected]",
"npm:zod@^3.25.75": "3.25.75",
"npm:[email protected]": "5.0.6_@[email protected][email protected][email protected]"
},
@ -1859,12 +1860,37 @@
"babel-dead-code-elimination",
"chokidar",
"unplugin",
"vite",
"vite@7.0.2_@[email protected][email protected]",
"zod"
],
"optionalPeers": [
"@tanstack/react-router",
"vite"
"[email protected]_@[email protected][email protected]"
]
},
"@tanstack/[email protected]_@[email protected][email protected][email protected][email protected][email protected]__@[email protected][email protected]_@[email protected][email protected][email protected][email protected]_@[email protected]_@[email protected]": {
"integrity": "sha512-SWfp++tkjb0grVqa/Xdvi9QAs93e9/fZMBZ6q0fvvQruMyciCmjWyE/qV3tS/Qh0WZdzIRP6yl8Gha2Lin4q1w==",
"dependencies": [
"@babel/core",
"@babel/plugin-syntax-jsx",
"@babel/plugin-syntax-typescript",
"@babel/template",
"@babel/traverse",
"@babel/types",
"@tanstack/react-router",
"@tanstack/router-core",
"@tanstack/router-generator",
"@tanstack/router-utils",
"@tanstack/virtual-file-routes",
"babel-dead-code-elimination",
"chokidar",
"unplugin",
"[email protected]_@[email protected][email protected]_@[email protected]",
"zod"
],
"optionalPeers": [
"@tanstack/react-router",
"[email protected]_@[email protected][email protected]_@[email protected]"
]
},
"@tanstack/[email protected]_@[email protected]": {
@ -3371,6 +3397,12 @@
"[email protected]"
]
},
"@types/[email protected]": {
"integrity": "sha512-R5muMcZob3/Jjchn5LcO8jdKwSCbzqmPB6ruBxMcf9kbxtniZHP327s6C37iOfuw8mbKK3cAQa7sEl7afLrQ8A==",
"dependencies": [
"[email protected]"
]
},
"@types/[email protected]": {
"integrity": "sha512-B2egV9wALML1JCpv3VQoQ+yesQKAmNMBIAY7OteVrikcOcAkWm+dGL6qpeCktPjAv6N1JLnhbNiqS35UpFyBsQ==",
"dependencies": [
@ -3447,7 +3479,19 @@
"@rolldown/pluginutils",
"@types/babel__core",
"react-refresh",
"vite"
"[email protected]_@[email protected][email protected]"
]
},
"@vitejs/[email protected][email protected]__@[email protected][email protected]_@[email protected]_@[email protected]_@[email protected]": {
"integrity": "sha512-5Kgff+m8e2PB+9j51eGHEpn5kUzRKH2Ry0qGoe8ItJg7pqnkPrYPkDQZGgGmTa0EGarHrkjLvOdU3b1fzI8otQ==",
"dependencies": [
"@babel/core",
"@babel/plugin-transform-react-jsx-self",
"@babel/plugin-transform-react-jsx-source",
"@rolldown/pluginutils",
"@types/babel__core",
"react-refresh",
"[email protected]_@[email protected][email protected]_@[email protected]"
]
},
"@vitest/[email protected]": {
@ -3466,10 +3510,22 @@
"@vitest/spy",
"estree-walker",
"magic-string",
"vite"
"vite@7.0.2_@[email protected][email protected]"
],
"optionalPeers": [
"vite"
"[email protected]_@[email protected][email protected]"
]
},
"@vitest/[email protected][email protected]__@[email protected][email protected]_@[email protected]_@[email protected]": {
"integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==",
"dependencies": [
"@vitest/spy",
"estree-walker",
"magic-string",
"[email protected]_@[email protected][email protected]_@[email protected]"
],
"optionalPeers": [
"[email protected]_@[email protected][email protected]_@[email protected]"
]
},
"@vitest/[email protected]": {
@ -5020,7 +5076,18 @@
"debug",
"es-module-lexer",
"pathe",
"vite"
"[email protected]_@[email protected][email protected]"
],
"bin": true
},
"[email protected]_@[email protected]_@[email protected]": {
"integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==",
"dependencies": [
"cac",
"debug",
"es-module-lexer",
"pathe",
"[email protected]_@[email protected][email protected]_@[email protected]"
],
"bin": true
},
@ -5043,13 +5110,32 @@
],
"bin": true
},
"[email protected]_@[email protected][email protected]_@[email protected]": {
"integrity": "sha512-hxdyZDY1CM6SNpKI4w4lcUc3Mtkd9ej4ECWVHSMrOdSinVc2zYOAppHeGc/hzmRo3pxM5blMzkuWHOJA/3NiFw==",
"dependencies": [
"@types/[email protected]",
"esbuild",
"fdir",
"[email protected]",
"postcss",
"rollup",
"tinyglobby"
],
"optionalDependencies": [
"fsevents"
],
"optionalPeers": [
"@types/[email protected]"
],
"bin": true
},
"[email protected]_@[email protected][email protected][email protected]__@[email protected][email protected]": {
"integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==",
"dependencies": [
"@types/chai",
"@types/[email protected]",
"@vitest/expect",
"@vitest/mocker",
"@vitest/mocker@[email protected]__@[email protected][email protected]_@[email protected]",
"@vitest/pretty-format",
"@vitest/runner",
"@vitest/snapshot",
@ -5068,8 +5154,8 @@
"tinyglobby",
"tinypool",
"tinyrainbow",
"vite",
"vite-node",
"vite@7.0.2_@[email protected][email protected]",
"vite-node@3.2.4_@[email protected]",
"why-is-node-running"
],
"optionalPeers": [
@ -5078,6 +5164,41 @@
],
"bin": true
},
"[email protected]_@[email protected][email protected][email protected]__@[email protected][email protected]_@[email protected]": {
"integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==",
"dependencies": [
"@types/chai",
"@types/[email protected]",
"@vitest/expect",
"@vitest/[email protected][email protected]__@[email protected][email protected]_@[email protected]_@[email protected]",
"@vitest/pretty-format",
"@vitest/runner",
"@vitest/snapshot",
"@vitest/spy",
"@vitest/utils",
"chai",
"debug",
"expect-type",
"happy-dom",
"magic-string",
"pathe",
"[email protected]",
"std-env",
"tinybench",
"tinyexec",
"tinyglobby",
"tinypool",
"tinyrainbow",
"[email protected]_@[email protected][email protected]_@[email protected]",
"[email protected]_@[email protected]_@[email protected]",
"why-is-node-running"
],
"optionalPeers": [
"@types/[email protected]",
"happy-dom"
],
"bin": true
},
"[email protected]": {
"integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w=="
},

7
packages/core/src/meshDevice.ts

@ -818,6 +818,13 @@ export class MeshDevice {
this.queue.clear();
}
/** Disconnects from the device **/
public async disconnect(): Promise<void> {
this.log.debug(Emitter[Emitter.Disconnect], "🔌 Disconnecting from device");
this.complete();
await this.transport.toDevice.close();
}
/**
* Gets called when a MeshPacket is received from device
*/

1
packages/core/src/types.ts

@ -99,6 +99,7 @@ export enum Emitter {
EnterDfuMode = 31,
RemoveNodeByNum = 32,
SetCannedMessages = 33,
Disconnect = 34,
}
export interface LogEvent {

3
packages/web/public/i18n/locales/en/commandPalette.json

@ -37,7 +37,8 @@
"rebootToOtaMode": "Reboot To OTA Mode",
"resetNodeDb": "Reset Node DB",
"factoryResetDevice": "Factory Reset Device",
"factoryResetConfig": "Factory Reset Config"
"factoryResetConfig": "Factory Reset Config",
"disconnect": "Disconnect"
}
},
"debug": {

10
packages/web/src/components/CommandPalette/index.tsx

@ -13,6 +13,7 @@ import {
ArrowLeftRightIcon,
BoxSelectIcon,
BugIcon,
CloudOff,
EraserIcon,
FactoryIcon,
LayersIcon,
@ -199,6 +200,15 @@ export const CommandPalette = () => {
connection?.resetNodes();
},
},
{
label: t("contextual.command.disconnect"),
icon: CloudOff,
action() {
connection?.disconnect().catch((error) => {
console.error("Failed to disconnect:", error);
});
},
},
{
label: t("contextual.command.factoryResetDevice"),
icon: FactoryIcon,

Loading…
Cancel
Save