From 73ed5a4b61f902d27c59d3ed863b2865e0db2763 Mon Sep 17 00:00:00 2001 From: ACTCD <101378590+ACTCD@users.noreply.github.com> Date: Fri, 4 Aug 2023 10:37:21 +0800 Subject: [PATCH 1/6] feat: add native update logic --- xcode/Safari-Extension/Functions.swift | 43 +++++++++++++++++++ .../Safari-Extension/Resources/background.js | 20 ++++++++- .../SafariWebExtensionHandler.swift | 7 +++ 3 files changed, 69 insertions(+), 1 deletion(-) diff --git a/xcode/Safari-Extension/Functions.swift b/xcode/Safari-Extension/Functions.swift index 8e5fcffb..d8e24b01 100644 --- a/xcode/Safari-Extension/Functions.swift +++ b/xcode/Safari-Extension/Functions.swift @@ -1969,6 +1969,49 @@ func popupInit() -> [String: String]? { ] } +// background +func nativeUpdate() -> [String: String]? { + logText("nativeUpdate started") + // check the default directories + guard checkDefaultDirectories() else { + err("nativeUpdate: checkDefaultDirectories failed") + return ["error": "Native check error (1)"] + } + // check the settings + guard checkSettings() else { + err("nativeUpdate: checkSettings failed") + return ["error": "Native check error (2)"] + } + // get all files to pass as arguments to function below + guard let allFiles = getAllFiles() else { + err("nativeUpdate: getAllFiles failed") + return ["error": "Native check error (3)"] + } + // purge the manifest of old records + guard purgeManifest(allFiles) else { + err("nativeUpdate: purgeManifest failed") + return ["error": "Native check error (4)"] + } + // update matches in manifest + guard updateManifestMatches(allFiles) else { + err("nativeUpdate: updateManifestMatches failed") + return ["error": "Native check error (5)"] + } + // update the required resources + guard updateManifestRequired(allFiles) else { + err("nativeUpdate: updateManifestRequired failed") + return ["error": "Native check error (6)"] + } + // update declarativeNetRequest + guard updateManifestDeclarativeNetRequests(allFiles) else { + err("nativeUpdate: updateManifestDeclarativeNetRequests failed") + return ["error": "Native check error (7)"] + } + // pass some info in response + logText("nativeUpdate complete") + return ["success": "Native update complete"] +} + // userscript install func installCheck(_ content: String) -> [String: Any] { // this func checks a userscript's metadata to determine if it's already installed diff --git a/xcode/Safari-Extension/Resources/background.js b/xcode/Safari-Extension/Resources/background.js index 32708caa..cfcdb8bf 100644 --- a/xcode/Safari-Extension/Resources/background.js +++ b/xcode/Safari-Extension/Resources/background.js @@ -273,6 +273,16 @@ function contextClick(info, tab) { }); } +async function nativeUpdate() { + const response = await browser.runtime.sendNativeMessage({name: "NATIVE_UPDATE"}); + // note: use settings.js once background page modularization + if (response.error) { + browser.storage.local.set({US_ERROR: response.error}); + } else { + browser.storage.local.remove("US_ERROR"); + } +} + // handles messages sent with browser.runtime.sendMessage function handleMessage(request, sender, sendResponse) { switch (request.name) { @@ -470,7 +480,15 @@ browser.runtime.onStartup.addListener(async () => { browser.runtime.onMessage.addListener(handleMessage); // set the badge count browser.tabs.onActivated.addListener(setBadgeCount); -browser.windows.onFocusChanged.addListener(setBadgeCount); +browser.windows.onFocusChanged.addListener(async windowId => { + if (windowId < 1) { // lose focus + return; + } + setBadgeCount(); + setSessionRules(); + getContextMenuItems(); + nativeUpdate(); +}); browser.webNavigation.onCompleted.addListener(setBadgeCount); // handle native app messages diff --git a/xcode/Safari-Extension/SafariWebExtensionHandler.swift b/xcode/Safari-Extension/SafariWebExtensionHandler.swift index 8f64175c..ec845629 100644 --- a/xcode/Safari-Extension/SafariWebExtensionHandler.swift +++ b/xcode/Safari-Extension/SafariWebExtensionHandler.swift @@ -25,6 +25,13 @@ class SafariWebExtensionHandler: NSObject, NSExtensionRequestHandling { #endif } } + else if name == "NATIVE_UPDATE" { + if let result = nativeUpdate() { + response.userInfo = [SFExtensionMessageKey: result] + } else { + response.userInfo = [SFExtensionMessageKey: ["error": "NATIVE_UPDATE failed"]] + } + } else if name == "REQ_PLATFORM" { let platform = getPlatform() response.userInfo = [SFExtensionMessageKey: ["platform": platform]] From 0a7dff09e37d0da0f7561f4eccaa3e71d475e2f9 Mon Sep 17 00:00:00 2001 From: ACTCD <101378590+ACTCD@users.noreply.github.com> Date: Fri, 4 Aug 2023 11:28:22 +0800 Subject: [PATCH 2/6] refactor: remove popup init checks --- src/popup/App.svelte | 23 ++------ src/shared/dev.js | 31 ---------- src/shared/settings.js | 11 +++- xcode/Safari-Extension/Functions.swift | 58 ------------------- .../Safari-Extension/Resources/background.js | 4 +- .../SafariWebExtensionHandler.swift | 9 +-- 6 files changed, 17 insertions(+), 119 deletions(-) diff --git a/src/popup/App.svelte b/src/popup/App.svelte index f12154c7..1d10c005 100644 --- a/src/popup/App.svelte +++ b/src/popup/App.svelte @@ -239,31 +239,18 @@ } platform = pltfm.platform; - // run init checks - // const init = await browser.runtime.sendNativeMessage({name: "POPUP_INIT"}).catch(error => {}); - let init; - try { - init = await browser.runtime.sendNativeMessage({name: "POPUP_INIT"}); - } catch (error) { - console.error(`Error for init promise: ${error}`); - initError = true; - loading = false; - return; - } - if (init.error) { - errorNotification = init.error; + // display global error if there is + const globalError = await settingsStorage.get("global_error"); + if (globalError) { + errorNotification = globalError; loading = false; disabled = false; return; } + // set toggle state active = await settingsStorage.get("global_active"); - // refresh session rules - browser.runtime.sendMessage({name: "REFRESH_SESSION_RULES"}); - // refresh context-menu scripts - browser.runtime.sendMessage({name: "REFRESH_CONTEXT_MENU_SCRIPTS"}); - // set popup height resize(); diff --git a/src/shared/dev.js b/src/shared/dev.js index 9b1037d2..03ab9296 100644 --- a/src/shared/dev.js +++ b/src/shared/dev.js @@ -265,37 +265,6 @@ const _browser = { } ] }; - } else if (name === "POPUP_INIT") { - response.initData = { - active: "true", - items: [ - { - name: "Google Images Restored", - filename: "Google Images Restored.js", - disabled: false, - type: "js" - }, - { - name: "Subframe Script Managerial Staffing Company", - filename: "Subframe Script.js", - disabled: false, - subframe: true, - type: "css" - } - ], - updates: [ - { - filename: "Google Images Restored.js", - name: "Google Images Restored", - url: "https://www.k21p.com" - }, - { - filename: "New Userscript With a Really Really Long Name.js", - name: "New Userscript With a Really Really Long Name", - url: "https://www.filmgarb.com" - } - ] - }; } else if (name === "POPUP_MATCHES") { response = { matches: [ diff --git a/src/shared/settings.js b/src/shared/settings.js index 2a68635c..0efc64db 100644 --- a/src/shared/settings.js +++ b/src/shared/settings.js @@ -160,6 +160,14 @@ export const settingsDefine = deepFreeze([ group: "General", nodeType: "Toggle" }, + { + name: "global_error", + type: "string", + local: true, + default: "", + platforms: ["macos", "ipados", "ios"], + group: "Internal" + }, { name: "scripts_update_check_lasttime", type: "number", @@ -173,8 +181,7 @@ export const settingsDefine = deepFreeze([ en: "The lasttime for script update check in background", zh_hans: "后台脚本更新上次检查时间" }, - group: "Internal", - nodeType: "Toggle" + group: "Internal" }, { name: "scripts_auto_update", diff --git a/xcode/Safari-Extension/Functions.swift b/xcode/Safari-Extension/Functions.swift index d8e24b01..214f69cd 100644 --- a/xcode/Safari-Extension/Functions.swift +++ b/xcode/Safari-Extension/Functions.swift @@ -1911,64 +1911,6 @@ func getFileRemoteUpdate(_ content: String) -> [String: String] { return ["content": remoteContent] } -func popupInit() -> [String: String]? { - // check the default directories - let checkDefaultDirectories = checkDefaultDirectories() - // check the settings - let checkSettings = checkSettings() - // get all files to pass as arguments to function below - guard let allFiles = getAllFiles() else { - err("Failed to getAllFiles in popupInit") - return nil - } - // purge the manifest of old records - let purgeManifest = purgeManifest(allFiles) - // update matches in manifest - let updateManifestMatches = updateManifestMatches(allFiles) - // update the required resources - let updateManifestRequired = updateManifestRequired(allFiles) - // update declarativeNetRequest - let updateDeclarativeNetRequest = updateManifestDeclarativeNetRequests(allFiles) - // verbose error checking - if !checkDefaultDirectories { - err("Failed to checkDefaultDirectories in popupInit") - return nil - } - if !checkSettings { - err("Failed to checkSettings in popupInit") - return nil - } - if !purgeManifest { - err("Failed to purgeManifest in popupInit") - return nil - } - if !updateManifestMatches { - err("Failed to updateManifestMatches in popupInit") - return nil - } - if !updateManifestRequired { - err("Failed to updateManifestRequired in popupInit") - return nil - } - if !updateDeclarativeNetRequest { - err("Failed to updateDeclarativeNetRequest in popupInit") - return nil - } - // pass some info in response - guard let saveLocation = getSaveLocation() else { - err("Failed at getSaveLocation in popupInit") - return nil - } - let documentsDirectory = getDocumentsDirectory() - let requireLocation = getRequireLocation() - - return [ - "saveLocation": saveLocation.absoluteString, - "documentsDirectory": documentsDirectory.absoluteString, - "requireLocation": requireLocation.absoluteString - ] -} - // background func nativeUpdate() -> [String: String]? { logText("nativeUpdate started") diff --git a/xcode/Safari-Extension/Resources/background.js b/xcode/Safari-Extension/Resources/background.js index cfcdb8bf..a37255ea 100644 --- a/xcode/Safari-Extension/Resources/background.js +++ b/xcode/Safari-Extension/Resources/background.js @@ -277,9 +277,9 @@ async function nativeUpdate() { const response = await browser.runtime.sendNativeMessage({name: "NATIVE_UPDATE"}); // note: use settings.js once background page modularization if (response.error) { - browser.storage.local.set({US_ERROR: response.error}); + browser.storage.local.set({US_GLOBAL_ERROR: response.error}); } else { - browser.storage.local.remove("US_ERROR"); + browser.storage.local.remove("US_GLOBAL_ERROR"); } } diff --git a/xcode/Safari-Extension/SafariWebExtensionHandler.swift b/xcode/Safari-Extension/SafariWebExtensionHandler.swift index ec845629..454299da 100644 --- a/xcode/Safari-Extension/SafariWebExtensionHandler.swift +++ b/xcode/Safari-Extension/SafariWebExtensionHandler.swift @@ -29,7 +29,7 @@ class SafariWebExtensionHandler: NSObject, NSExtensionRequestHandling { if let result = nativeUpdate() { response.userInfo = [SFExtensionMessageKey: result] } else { - response.userInfo = [SFExtensionMessageKey: ["error": "NATIVE_UPDATE failed"]] + response.userInfo = [SFExtensionMessageKey: ["error": "Native check failed"]] } } else if name == "REQ_PLATFORM" { @@ -75,13 +75,6 @@ class SafariWebExtensionHandler: NSObject, NSExtensionRequestHandling { inBoundError = true } } - else if name == "POPUP_INIT" { - if let initData = popupInit() { - response.userInfo = [SFExtensionMessageKey: ["initData": initData]] - } else { - response.userInfo = [SFExtensionMessageKey: ["error": "failed to get init data"]] - } - } else if name == "POPUP_MATCHES"{ if let url = message?["url"] as? String, let frameUrls = message?["frameUrls"] as? [String] { if let matches = getPopupMatches(url, frameUrls) { From 66b87ae8fa316fb5c19e0080470b1335d1ffcba5 Mon Sep 17 00:00:00 2001 From: ACTCD <101378590+ACTCD@users.noreply.github.com> Date: Sat, 5 Aug 2023 00:50:51 +0800 Subject: [PATCH 3/6] chore: update comments --- xcode/Safari-Extension/Resources/background.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/xcode/Safari-Extension/Resources/background.js b/xcode/Safari-Extension/Resources/background.js index a37255ea..5c86c6f5 100644 --- a/xcode/Safari-Extension/Resources/background.js +++ b/xcode/Safari-Extension/Resources/background.js @@ -129,6 +129,12 @@ async function setBadgeCount() { }); } +// on startup get declarativeNetRequests +// and set the requests for the session +// should also check and refresh when: +// 1. dnr item save event in the page occurs +// 2. dnr item toggle event in the page occurs +// 3. external editor changes script file content async function setSessionRules() { // not supported below safari 15.4 if (!browser.declarativeNetRequest.updateSessionRules) return; @@ -187,6 +193,9 @@ function randomNumberSet(max, count) { return [...numbers]; } +// the current update logic is similar to setSessionRules() +// this feature needs a more detailed redesign in the future +// https://github.com/quoid/userscripts/issues/453 async function getContextMenuItems() { // macos exclusive feature const platform = await getPlatform(); @@ -467,12 +476,6 @@ function handleMessage(request, sender, sendResponse) { } browser.runtime.onStartup.addListener(async () => { - // on startup get declarativeNetRequests - // and set the requests for the session - // should also check and refresh when: - // 1. popup opens (done) - // 2. a new save event in the page occurs - // 3. the refresh button is pushed in the popup await setSessionRules(); await getContextMenuItems(); }); From 7d27958f32dd2da984ca79afc254b12a415281ab Mon Sep 17 00:00:00 2001 From: ACTCD <101378590+ACTCD@users.noreply.github.com> Date: Sat, 5 Aug 2023 01:21:43 +0800 Subject: [PATCH 4/6] refactor: rename nativeUpdate to nativeChecks --- xcode/Safari-Extension/Functions.swift | 36 +++++++++---------- .../Safari-Extension/Resources/background.js | 6 ++-- .../SafariWebExtensionHandler.swift | 9 ++--- 3 files changed, 24 insertions(+), 27 deletions(-) diff --git a/xcode/Safari-Extension/Functions.swift b/xcode/Safari-Extension/Functions.swift index 214f69cd..f87ba59f 100644 --- a/xcode/Safari-Extension/Functions.swift +++ b/xcode/Safari-Extension/Functions.swift @@ -1912,46 +1912,46 @@ func getFileRemoteUpdate(_ content: String) -> [String: String] { } // background -func nativeUpdate() -> [String: String]? { - logText("nativeUpdate started") +func nativeChecks() -> [String: String] { + logText("nativeChecks started") // check the default directories guard checkDefaultDirectories() else { - err("nativeUpdate: checkDefaultDirectories failed") - return ["error": "Native check error (1)"] + err("nativeChecks: checkDefaultDirectories failed") + return ["error": "Native checks error (1)"] } // check the settings guard checkSettings() else { - err("nativeUpdate: checkSettings failed") - return ["error": "Native check error (2)"] + err("nativeChecks: checkSettings failed") + return ["error": "Native checks error (2)"] } // get all files to pass as arguments to function below guard let allFiles = getAllFiles() else { - err("nativeUpdate: getAllFiles failed") - return ["error": "Native check error (3)"] + err("nativeChecks: getAllFiles failed") + return ["error": "Native checks error (3)"] } // purge the manifest of old records guard purgeManifest(allFiles) else { - err("nativeUpdate: purgeManifest failed") - return ["error": "Native check error (4)"] + err("nativeChecks: purgeManifest failed") + return ["error": "Native checks error (4)"] } // update matches in manifest guard updateManifestMatches(allFiles) else { - err("nativeUpdate: updateManifestMatches failed") - return ["error": "Native check error (5)"] + err("nativeChecks: updateManifestMatches failed") + return ["error": "Native checks error (5)"] } // update the required resources guard updateManifestRequired(allFiles) else { - err("nativeUpdate: updateManifestRequired failed") - return ["error": "Native check error (6)"] + err("nativeChecks: updateManifestRequired failed") + return ["error": "Native checks error (6)"] } // update declarativeNetRequest guard updateManifestDeclarativeNetRequests(allFiles) else { - err("nativeUpdate: updateManifestDeclarativeNetRequests failed") - return ["error": "Native check error (7)"] + err("nativeChecks: updateManifestDeclarativeNetRequests failed") + return ["error": "Native checks error (7)"] } // pass some info in response - logText("nativeUpdate complete") - return ["success": "Native update complete"] + logText("nativeChecks complete") + return ["success": "Native checks complete"] } // userscript install diff --git a/xcode/Safari-Extension/Resources/background.js b/xcode/Safari-Extension/Resources/background.js index 5c86c6f5..1ea4ea72 100644 --- a/xcode/Safari-Extension/Resources/background.js +++ b/xcode/Safari-Extension/Resources/background.js @@ -282,8 +282,8 @@ function contextClick(info, tab) { }); } -async function nativeUpdate() { - const response = await browser.runtime.sendNativeMessage({name: "NATIVE_UPDATE"}); +async function nativeChecks() { + const response = await browser.runtime.sendNativeMessage({name: "NATIVE_CHECKS"}); // note: use settings.js once background page modularization if (response.error) { browser.storage.local.set({US_GLOBAL_ERROR: response.error}); @@ -490,7 +490,7 @@ browser.windows.onFocusChanged.addListener(async windowId => { setBadgeCount(); setSessionRules(); getContextMenuItems(); - nativeUpdate(); + nativeChecks(); }); browser.webNavigation.onCompleted.addListener(setBadgeCount); diff --git a/xcode/Safari-Extension/SafariWebExtensionHandler.swift b/xcode/Safari-Extension/SafariWebExtensionHandler.swift index 454299da..76364f59 100644 --- a/xcode/Safari-Extension/SafariWebExtensionHandler.swift +++ b/xcode/Safari-Extension/SafariWebExtensionHandler.swift @@ -25,12 +25,9 @@ class SafariWebExtensionHandler: NSObject, NSExtensionRequestHandling { #endif } } - else if name == "NATIVE_UPDATE" { - if let result = nativeUpdate() { - response.userInfo = [SFExtensionMessageKey: result] - } else { - response.userInfo = [SFExtensionMessageKey: ["error": "Native check failed"]] - } + else if name == "NATIVE_CHECKS" { + let result = nativeChecks() + response.userInfo = [SFExtensionMessageKey: result] } else if name == "REQ_PLATFORM" { let platform = getPlatform() From c1bf2080a6c90b42a1d3ad6a66077216ae677e2b Mon Sep 17 00:00:00 2001 From: ACTCD <101378590+ACTCD@users.noreply.github.com> Date: Sat, 5 Aug 2023 05:49:06 +0800 Subject: [PATCH 5/6] refactor: improve first use popup prompt in ios --- src/popup/App.svelte | 26 ++++++++++++++++--- src/shared/settings.js | 16 ++++++------ xcode/Safari-Extension/Functions.swift | 11 ++++++++ .../Safari-Extension/Resources/background.js | 17 +++++++----- xcode/iOS-App/Info.plist | 13 ++++++++++ 5 files changed, 64 insertions(+), 19 deletions(-) diff --git a/src/popup/App.svelte b/src/popup/App.svelte index 1d10c005..f4bb1998 100644 --- a/src/popup/App.svelte +++ b/src/popup/App.svelte @@ -27,6 +27,7 @@ let inactive = false; let platform; let initError; + let firstGuide; let windowHeight = 0; let header; let warn; @@ -220,6 +221,13 @@ loading = false; } + async function openContainingApp() { + browser.tabs.executeScript({ + code: `location="${firstGuide}"` + }); + window.close(); + } + async function initialize() { // get platform first since it applies important styling let pltfm; @@ -239,10 +247,15 @@ } platform = pltfm.platform; - // display global error if there is - const globalError = await settingsStorage.get("global_error"); - if (globalError) { - errorNotification = globalError; + // display native error if there is + const errorNative = await settingsStorage.get("error_native"); + if (errorNative.error) { + if (errorNative.saveLocation === "unset") { + firstGuide = `${errorNative.scheme}://`; + loading = false; + return; + } + errorNotification = errorNative.error; loading = false; disabled = false; return; @@ -529,6 +542,11 @@ {:else} {#if inactive}
Popup inactive on extension page
+ {:else if firstGuide} +
+ Welcome, first please:  + set directory +
{:else if initError}
Something went wrong:  diff --git a/src/shared/settings.js b/src/shared/settings.js index 0efc64db..059870b6 100644 --- a/src/shared/settings.js +++ b/src/shared/settings.js @@ -41,6 +41,14 @@ const settingDefault = deepFreeze({ }); export const settingsDefine = deepFreeze([ + { + name: "error_native", + type: "object", + local: true, + default: {error: undefined}, + platforms: ["macos", "ipados", "ios"], + group: "Internal" + }, { name: "legacy_imported", type: "number", @@ -160,14 +168,6 @@ export const settingsDefine = deepFreeze([ group: "General", nodeType: "Toggle" }, - { - name: "global_error", - type: "string", - local: true, - default: "", - platforms: ["macos", "ipados", "ios"], - group: "Internal" - }, { name: "scripts_update_check_lasttime", type: "number", diff --git a/xcode/Safari-Extension/Functions.swift b/xcode/Safari-Extension/Functions.swift index f87ba59f..a923d313 100644 --- a/xcode/Safari-Extension/Functions.swift +++ b/xcode/Safari-Extension/Functions.swift @@ -1914,6 +1914,17 @@ func getFileRemoteUpdate(_ content: String) -> [String: String] { // background func nativeChecks() -> [String: String] { logText("nativeChecks started") + #if os(iOS) + // check the save location is set + guard (getSaveLocation() != nil) else { + err("nativeChecks: checkDefaultDirectories failed") + return [ + "error": "Native checks error (0)", + "saveLocation": "unset", + "scheme": Bundle.main.infoDictionary?["US_URL_SCHEME"] as! String + ] + } + #endif // check the default directories guard checkDefaultDirectories() else { err("nativeChecks: checkDefaultDirectories failed") diff --git a/xcode/Safari-Extension/Resources/background.js b/xcode/Safari-Extension/Resources/background.js index 1ea4ea72..42376d00 100644 --- a/xcode/Safari-Extension/Resources/background.js +++ b/xcode/Safari-Extension/Resources/background.js @@ -286,10 +286,11 @@ async function nativeChecks() { const response = await browser.runtime.sendNativeMessage({name: "NATIVE_CHECKS"}); // note: use settings.js once background page modularization if (response.error) { - browser.storage.local.set({US_GLOBAL_ERROR: response.error}); - } else { - browser.storage.local.remove("US_GLOBAL_ERROR"); + browser.storage.local.set({US_ERROR_NATIVE: response}); + return false; } + browser.storage.local.remove("US_ERROR_NATIVE"); + return true; } // handles messages sent with browser.runtime.sendMessage @@ -474,10 +475,12 @@ function handleMessage(request, sender, sendResponse) { } } } - +browser.runtime.onInstalled.addListener(async () => { + nativeChecks(); +}); browser.runtime.onStartup.addListener(async () => { - await setSessionRules(); - await getContextMenuItems(); + setSessionRules(); + getContextMenuItems(); }); // listens for messages from content script, popup and page browser.runtime.onMessage.addListener(handleMessage); @@ -487,10 +490,10 @@ browser.windows.onFocusChanged.addListener(async windowId => { if (windowId < 1) { // lose focus return; } + nativeChecks(); setBadgeCount(); setSessionRules(); getContextMenuItems(); - nativeChecks(); }); browser.webNavigation.onCompleted.addListener(setBadgeCount); diff --git a/xcode/iOS-App/Info.plist b/xcode/iOS-App/Info.plist index a2a30aa2..a5539a85 100644 --- a/xcode/iOS-App/Info.plist +++ b/xcode/iOS-App/Info.plist @@ -2,6 +2,19 @@ + CFBundleURLTypes + + + CFBundleTypeRole + Viewer + CFBundleURLName + $(APP_IDENTIFIER) + CFBundleURLSchemes + + $(APP_URL_SCHEME) + + + UIApplicationSceneManifest UIApplicationSupportsMultipleScenes From bf676bd005ff2da9e3830413392e53b2c84fe51f Mon Sep 17 00:00:00 2001 From: ACTCD <101378590+ACTCD@users.noreply.github.com> Date: Sat, 5 Aug 2023 06:36:22 +0800 Subject: [PATCH 6/6] chore: update error message --- xcode/Safari-Extension/Functions.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xcode/Safari-Extension/Functions.swift b/xcode/Safari-Extension/Functions.swift index a923d313..b65558cf 100644 --- a/xcode/Safari-Extension/Functions.swift +++ b/xcode/Safari-Extension/Functions.swift @@ -1917,7 +1917,7 @@ func nativeChecks() -> [String: String] { #if os(iOS) // check the save location is set guard (getSaveLocation() != nil) else { - err("nativeChecks: checkDefaultDirectories failed") + err("nativeChecks: save location unset (iOS)") return [ "error": "Native checks error (0)", "saveLocation": "unset",