From 85cbb12addf061f3a9e34a7b035b051658c78470 Mon Sep 17 00:00:00 2001 From: James Hu Date: Thu, 18 Apr 2024 15:50:59 -0700 Subject: [PATCH 1/9] Update safari extension - Add preference to skip iCloud tabs - Initial commit --- extensions/safari/package.json | 18 ++++++++-- extensions/safari/src/hooks/useDevices.ts | 40 ++++++++++++++--------- 2 files changed, 40 insertions(+), 18 deletions(-) diff --git a/extensions/safari/package.json b/extensions/safari/package.json index 1ffaa800554a..3bc5486b35e2 100644 --- a/extensions/safari/package.json +++ b/extensions/safari/package.json @@ -11,7 +11,8 @@ "author": "loris", "contributors": [ "thomas", - "HelloImSteven" + "HelloImSteven", + "axsuul" ], "license": "MIT", "commands": [ @@ -19,8 +20,19 @@ "name": "cloud-tabs", "title": "Search Tabs", "subtitle": "Safari", - "description": "Browse your open tabs (Local and iCloud)", - "mode": "view" + "description": "Browse your open tabs", + "mode": "view", + "preferences": [ + { + "name": "areRemoteTabsUsed", + "type": "checkbox", + "required": true, + "title": "Devices", + "description": "Include tabs across all iCloud devices", + "default": true, + "label": "iCloud tabs" + } + ] }, { "name": "reading-list", diff --git a/extensions/safari/src/hooks/useDevices.ts b/extensions/safari/src/hooks/useDevices.ts index f2961c6130b1..d3c8d1252bcf 100644 --- a/extensions/safari/src/hooks/useDevices.ts +++ b/extensions/safari/src/hooks/useDevices.ts @@ -1,4 +1,5 @@ import _ from "lodash"; +import { getPreferenceValues } from "@raycast/api"; import { useCachedPromise, useExec, useSQL } from "@raycast/utils"; import { homedir } from "os"; import { resolve } from "path"; @@ -49,31 +50,40 @@ const useDeviceName = () => const useLocalTabs = () => useCachedPromise(fetchLocalTabs, [], { keepPreviousData: true }); const useDevices = () => { + const preferences = getPreferenceValues(); const { data: deviceName } = useDeviceName(); - const remoteTabs = useRemoteTabs(); const localTabs = useLocalTabs(); - const localDevice = { uuid: "local", name: `${deviceName} ★`, tabs: localTabs.data, }; + let result = { + refreshDevices: localTabs.revalidate, + }; + let devices = [localDevice]; + + if (preferences.areRemoteTabsUsed) { + const remoteTabs = useRemoteTabs(); + const remoteDevices = _.chain(remoteTabs.data) + .groupBy("device_uuid") + .transform((devices: Device[], tabs: RemoteTab[], device_uuid: string) => { + devices.push({ + uuid: device_uuid, + name: tabs[0].device_name, + tabs, + }); + }, []) + .reject(["name", deviceName]) + .value(); - const removeDevices = _.chain(remoteTabs.data) - .groupBy("device_uuid") - .transform((devices: Device[], tabs: RemoteTab[], device_uuid: string) => { - devices.push({ - uuid: device_uuid, - name: tabs[0].device_name, - tabs, - }); - }, []) - .reject(["name", deviceName]) - .value(); + result.permissionView = remoteTabs.permissionView + devices.push(...remoteDevices); + } - const devices = [localDevice, ...removeDevices]; + result.devices = devices - return { devices, permissionView: remoteTabs.permissionView, refreshDevices: localTabs.revalidate }; + return result; }; export default useDevices; From d27a1050b0524f85904cf84040ff2b8b8ae619c7 Mon Sep 17 00:00:00 2001 From: James Hu Date: Thu, 18 Apr 2024 16:03:38 -0700 Subject: [PATCH 2/9] Add changelog and details --- extensions/safari/CHANGELOG.md | 4 ++++ extensions/safari/package.json | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/extensions/safari/CHANGELOG.md b/extensions/safari/CHANGELOG.md index 99027cc1401d..01ea8b93abc9 100644 --- a/extensions/safari/CHANGELOG.md +++ b/extensions/safari/CHANGELOG.md @@ -1,5 +1,9 @@ # Safari Changelog +## [Update] - 2024-04-18 + +- Adds a preference to skip browsing iCloud tabs + ## [Fix] - 2023-12-20 - Fix the title of ReadingListNonSync may possibly be null diff --git a/extensions/safari/package.json b/extensions/safari/package.json index 3bc5486b35e2..d26878201467 100644 --- a/extensions/safari/package.json +++ b/extensions/safari/package.json @@ -28,9 +28,9 @@ "type": "checkbox", "required": true, "title": "Devices", - "description": "Include tabs across all iCloud devices", + "description": "Include iCloud tabs across all your devices", "default": true, - "label": "iCloud tabs" + "label": "iCloud" } ] }, From 4a78f5ad79ad349953c6170626c68ecb54fbf18d Mon Sep 17 00:00:00 2001 From: James Hu Date: Thu, 18 Apr 2024 16:08:16 -0700 Subject: [PATCH 3/9] Fix styling issues --- extensions/safari/src/hooks/useDevices.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/safari/src/hooks/useDevices.ts b/extensions/safari/src/hooks/useDevices.ts index d3c8d1252bcf..ea3256776c02 100644 --- a/extensions/safari/src/hooks/useDevices.ts +++ b/extensions/safari/src/hooks/useDevices.ts @@ -58,10 +58,10 @@ const useDevices = () => { name: `${deviceName} ★`, tabs: localTabs.data, }; - let result = { + const result = { refreshDevices: localTabs.revalidate, }; - let devices = [localDevice]; + const devices = [localDevice]; if (preferences.areRemoteTabsUsed) { const remoteTabs = useRemoteTabs(); From 25f7e171a66e9e3731747c11cf62b9b834135b64 Mon Sep 17 00:00:00 2001 From: James Hu Date: Thu, 18 Apr 2024 16:11:00 -0700 Subject: [PATCH 4/9] Fix lint issues --- extensions/safari/src/hooks/useDevices.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/safari/src/hooks/useDevices.ts b/extensions/safari/src/hooks/useDevices.ts index ea3256776c02..26a4957fa75c 100644 --- a/extensions/safari/src/hooks/useDevices.ts +++ b/extensions/safari/src/hooks/useDevices.ts @@ -77,11 +77,11 @@ const useDevices = () => { .reject(["name", deviceName]) .value(); - result.permissionView = remoteTabs.permissionView + result.permissionView = remoteTabs.permissionView; devices.push(...remoteDevices); } - result.devices = devices + result.devices = devices; return result; }; From 6348f66c4b390e229553f41569320c7278823a93 Mon Sep 17 00:00:00 2001 From: James Hu Date: Thu, 18 Apr 2024 16:18:43 -0700 Subject: [PATCH 5/9] Typescript fix --- extensions/safari/src/hooks/useDevices.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/extensions/safari/src/hooks/useDevices.ts b/extensions/safari/src/hooks/useDevices.ts index 26a4957fa75c..4a570d9f0a5b 100644 --- a/extensions/safari/src/hooks/useDevices.ts +++ b/extensions/safari/src/hooks/useDevices.ts @@ -59,9 +59,10 @@ const useDevices = () => { tabs: localTabs.data, }; const result = { + devices: [localDevice], + permissionView: null, refreshDevices: localTabs.revalidate, }; - const devices = [localDevice]; if (preferences.areRemoteTabsUsed) { const remoteTabs = useRemoteTabs(); @@ -77,12 +78,10 @@ const useDevices = () => { .reject(["name", deviceName]) .value(); + result.devices.push(...remoteDevices); result.permissionView = remoteTabs.permissionView; - devices.push(...remoteDevices); } - result.devices = devices; - return result; }; From a57ec1c2e834a5f6dd57c1d7faf88c4fa0c76df9 Mon Sep 17 00:00:00 2001 From: James Hu Date: Thu, 18 Apr 2024 16:20:42 -0700 Subject: [PATCH 6/9] Oops --- extensions/safari/src/hooks/useDevices.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/safari/src/hooks/useDevices.ts b/extensions/safari/src/hooks/useDevices.ts index 4a570d9f0a5b..0774ca193304 100644 --- a/extensions/safari/src/hooks/useDevices.ts +++ b/extensions/safari/src/hooks/useDevices.ts @@ -60,7 +60,7 @@ const useDevices = () => { }; const result = { devices: [localDevice], - permissionView: null, + permissionView: undefined, refreshDevices: localTabs.revalidate, }; From ba45d04591135caadb61f09a7368a1e09f84f397 Mon Sep 17 00:00:00 2001 From: James Hu Date: Thu, 18 Apr 2024 16:29:32 -0700 Subject: [PATCH 7/9] Refactor --- extensions/safari/src/hooks/useDevices.ts | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/extensions/safari/src/hooks/useDevices.ts b/extensions/safari/src/hooks/useDevices.ts index 0774ca193304..06e0479481a5 100644 --- a/extensions/safari/src/hooks/useDevices.ts +++ b/extensions/safari/src/hooks/useDevices.ts @@ -58,11 +58,8 @@ const useDevices = () => { name: `${deviceName} ★`, tabs: localTabs.data, }; - const result = { - devices: [localDevice], - permissionView: undefined, - refreshDevices: localTabs.revalidate, - }; + const devices = [localDevice] + let permissionView; if (preferences.areRemoteTabsUsed) { const remoteTabs = useRemoteTabs(); @@ -78,11 +75,11 @@ const useDevices = () => { .reject(["name", deviceName]) .value(); - result.devices.push(...remoteDevices); - result.permissionView = remoteTabs.permissionView; + devices.push(...remoteDevices); + permissionView = remoteTabs.permissionView; } - return result; + return { devices, permissionView, refreshDevices: localTabs.revalidate }; }; export default useDevices; From be4ebbf0384c716bf6770bf07df7f0ad11667dd7 Mon Sep 17 00:00:00 2001 From: James Hu Date: Thu, 18 Apr 2024 16:32:34 -0700 Subject: [PATCH 8/9] Fix lint --- extensions/safari/src/hooks/useDevices.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/safari/src/hooks/useDevices.ts b/extensions/safari/src/hooks/useDevices.ts index 06e0479481a5..a84c43790880 100644 --- a/extensions/safari/src/hooks/useDevices.ts +++ b/extensions/safari/src/hooks/useDevices.ts @@ -58,7 +58,7 @@ const useDevices = () => { name: `${deviceName} ★`, tabs: localTabs.data, }; - const devices = [localDevice] + const devices = [localDevice]; let permissionView; if (preferences.areRemoteTabsUsed) { From efc482ed73b8809f529027e55c9f1bccb06c0c45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20Nielsen=20Tik=C3=A6r?= Date: Tue, 23 Apr 2024 06:37:59 +0200 Subject: [PATCH 9/9] Update package.json --- extensions/safari/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/safari/package.json b/extensions/safari/package.json index d26878201467..2a444011c3f6 100644 --- a/extensions/safari/package.json +++ b/extensions/safari/package.json @@ -26,7 +26,7 @@ { "name": "areRemoteTabsUsed", "type": "checkbox", - "required": true, + "required": false, "title": "Devices", "description": "Include iCloud tabs across all your devices", "default": true,