From 1e29c6b31e5ccee20cdf11e32c6368d5201d3b96 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Fri, 3 May 2024 15:28:38 -0500 Subject: [PATCH 1/2] [Toothpick] Add commands for Toggling devices --- extensions/toothpick/package.json | 40 ++++++++++++++++++- extensions/toothpick/src/toggle-device.ts | 38 ++++++++++++++++++ .../toothpick/src/toggle-favorite-device-1.ts | 8 ++++ .../toothpick/src/toggle-favorite-device-2.ts | 8 ++++ .../toothpick/src/toggle-favorite-device-3.ts | 8 ++++ 5 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 extensions/toothpick/src/toggle-device.ts create mode 100644 extensions/toothpick/src/toggle-favorite-device-1.ts create mode 100644 extensions/toothpick/src/toggle-favorite-device-2.ts create mode 100644 extensions/toothpick/src/toggle-favorite-device-3.ts diff --git a/extensions/toothpick/package.json b/extensions/toothpick/package.json index fcd86d382f0..13d38188818 100644 --- a/extensions/toothpick/package.json +++ b/extensions/toothpick/package.json @@ -8,7 +8,8 @@ "briankosw", "oranja", "sxn", - "pernielsentikaer" + "pernielsentikaer", + "rspeicher" ], "repository": { "type": "git", @@ -79,6 +80,22 @@ ], "disabledByDefault": true }, + { + "name": "toggle-device", + "title": "Toggle Device", + "subtitle": "Toothpick", + "description": "Shortcut for toggling a connection to a specific device.", + "mode": "no-view", + "arguments": [ + { + "name": "nameOrMacAddress", + "placeholder": "Name or Mac Address", + "type": "text", + "required": true + } + ], + "disabledByDefault": true + }, { "name": "connect-favorite-device-1", "title": "Connect Favorite Device #1", @@ -121,6 +138,27 @@ "mode": "no-view", "disabledByDefault": true }, + { + "name": "toggle-favorite-device-1", + "title": "Toggle Favorite Device #1", + "description": "Shortcut for toggling a connection to favorite device #1.", + "mode": "no-view", + "disabledByDefault": true + }, + { + "name": "toggle-favorite-device-2", + "title": "Toggle Favorite Device #2", + "description": "Shortcut for toggling a connection to favorite device #2.", + "mode": "no-view", + "disabledByDefault": true + }, + { + "name": "toggle-favorite-device-3", + "title": "Toggle Favorite Device #3", + "description": "Shortcut for toggling a connection to favorite device #3.", + "mode": "no-view", + "disabledByDefault": true + }, { "name": "view-mapped-devices", "title": "View Mapped Devices", diff --git a/extensions/toothpick/src/toggle-device.ts b/extensions/toothpick/src/toggle-device.ts new file mode 100644 index 00000000000..d5a2a8c3b41 --- /dev/null +++ b/extensions/toothpick/src/toggle-device.ts @@ -0,0 +1,38 @@ +import { getPreferenceValues } from "@raycast/api"; +import { ratio } from "fuzzball"; +import { connectDevice } from "./core/devices/handlers/connect-device"; +import { disconnectDevice } from "./core/devices/handlers/disconnect-device"; +import { getDevicesService } from "./core/devices/devices.service"; +import { showErrorMessage } from "./utils"; + +export default async (props: { arguments: { nameOrMacAddress: string | undefined } }) => { + const { fuzzyRatio, bluetoothBackend } = getPreferenceValues(); + + if (props.arguments.nameOrMacAddress === undefined) { + await showErrorMessage("Undefined value. Check extension preferences."); + return; + } + + if (isNaN(parseFloat(fuzzyRatio))) { + await showErrorMessage("Invalid fuzzy ratio. Check extension preferences."); + return; + } + + const devices = getDevicesService(bluetoothBackend)?.getDevices() ?? []; + + const device = devices.find( + (device) => + ratio(device.name, props.arguments.nameOrMacAddress || "") > parseFloat(fuzzyRatio) || + device.macAddress === props.arguments.nameOrMacAddress + ); + + if (!device) { + await showErrorMessage("Device not found"); + } else { + if (device.connected) { + await disconnectDevice(device); + } else { + await connectDevice(device); + } + } +}; diff --git a/extensions/toothpick/src/toggle-favorite-device-1.ts b/extensions/toothpick/src/toggle-favorite-device-1.ts new file mode 100644 index 00000000000..beb1659f0d3 --- /dev/null +++ b/extensions/toothpick/src/toggle-favorite-device-1.ts @@ -0,0 +1,8 @@ +import { getPreferenceValues, updateCommandMetadata } from "@raycast/api"; +import toggleFavoriteDevice from "./toggle-device"; + +export default async () => { + const { favoriteDevice1 } = getPreferenceValues(); + await updateCommandMetadata({ subtitle: favoriteDevice1 }); + await toggleFavoriteDevice({ arguments: { nameOrMacAddress: favoriteDevice1 } }); +}; diff --git a/extensions/toothpick/src/toggle-favorite-device-2.ts b/extensions/toothpick/src/toggle-favorite-device-2.ts new file mode 100644 index 00000000000..39930ecd303 --- /dev/null +++ b/extensions/toothpick/src/toggle-favorite-device-2.ts @@ -0,0 +1,8 @@ +import { getPreferenceValues, updateCommandMetadata } from "@raycast/api"; +import toggleFavoriteDevice from "./toggle-device"; + +export default async () => { + const { favoriteDevice2 } = getPreferenceValues(); + await updateCommandMetadata({ subtitle: favoriteDevice2 }); + await toggleFavoriteDevice({ arguments: { nameOrMacAddress: favoriteDevice2 } }); +}; diff --git a/extensions/toothpick/src/toggle-favorite-device-3.ts b/extensions/toothpick/src/toggle-favorite-device-3.ts new file mode 100644 index 00000000000..7acf81aefe5 --- /dev/null +++ b/extensions/toothpick/src/toggle-favorite-device-3.ts @@ -0,0 +1,8 @@ +import { getPreferenceValues, updateCommandMetadata } from "@raycast/api"; +import toggleFavoriteDevice from "./toggle-device"; + +export default async () => { + const { favoriteDevice3 } = getPreferenceValues(); + await updateCommandMetadata({ subtitle: favoriteDevice3 }); + await toggleFavoriteDevice({ arguments: { nameOrMacAddress: favoriteDevice3 } }); +}; From f919fc6159e598b24edf12c15087dd95b69614b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20Nielsen=20Tik=C3=A6r?= Date: Mon, 6 May 2024 08:31:16 +0200 Subject: [PATCH 2/2] changelog --- extensions/toothpick/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/extensions/toothpick/CHANGELOG.md b/extensions/toothpick/CHANGELOG.md index eec7fce39ec..9b02f885083 100644 --- a/extensions/toothpick/CHANGELOG.md +++ b/extensions/toothpick/CHANGELOG.md @@ -1,5 +1,9 @@ # Toothpick Changelog +## [QoL Improvements] - 2024-05-06 + +- Added so it's possible to toggle devices + ## [Update] - 2024-05-02 - Fixed an error when using deeplink in background