From 4bc3707c78969638e8f3f19a93dcb93eb8acd67d Mon Sep 17 00:00:00 2001 From: ACTCD <101378590+ACTCD@users.noreply.github.com> Date: Fri, 3 Jan 2025 18:04:54 +0800 Subject: [PATCH 1/2] fix(ios): make default directory initialization work again --- xcode/Shared/Preferences.swift | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/xcode/Shared/Preferences.swift b/xcode/Shared/Preferences.swift index 6d1f67fc..d26e10ed 100644 --- a/xcode/Shared/Preferences.swift +++ b/xcode/Shared/Preferences.swift @@ -252,11 +252,12 @@ private struct SecurityScopedBookmark { set(url) { let k = key // key cannot be log directly with error: Escaping autoclosure captures mutating 'self' parameter logger?.info("\(#function, privacy: .public) - try set bookmark: \(k, privacy: .public) \(url, privacy: .public)") - guard url.startAccessingSecurityScopedResource() else { - logger?.error("\(#function, privacy: .public) - failed access url: \(url, privacy: .public)") - return + // true - when url from UIDocumentPicker + // false - when set default app document + let didStartAccessing = url.startAccessingSecurityScopedResource() + defer { + if didStartAccessing { url.stopAccessingSecurityScopedResource() } } - defer { url.stopAccessingSecurityScopedResource() } guard let data = createBookmark(url) else { logger?.info("\(#function, privacy: .public) - failed create bookmark: \(k, privacy: .public) \(url, privacy: .public)") return From e6c920de9f720173ab9f4fcad5c9615cb710262c Mon Sep 17 00:00:00 2001 From: ACTCD <101378590+ACTCD@users.noreply.github.com> Date: Fri, 3 Jan 2025 18:08:38 +0800 Subject: [PATCH 2/2] refactor: extract shared directory update logic --- xcode/App-Shared/ViewController.swift | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/xcode/App-Shared/ViewController.swift b/xcode/App-Shared/ViewController.swift index 61f98471..7b9b1f91 100644 --- a/xcode/App-Shared/ViewController.swift +++ b/xcode/App-Shared/ViewController.swift @@ -219,6 +219,10 @@ class ViewController: PlatformViewController, WKNavigationDelegate, WKScriptMess func updateEnableLoggerState() { self.webView.evaluateJavaScript("webapp.switchLogger(\(Preferences.enableLogger),\(Preferences.promptLogger))") } + + func updateCurrentDirectory() { + self.webView.evaluateJavaScript("webapp.updateDirectory('\(getCurrentScriptsDirectoryString())')") + } #if os(macOS) deinit { @@ -268,7 +272,7 @@ extension ViewController: UIDocumentPickerDelegate { func changeSaveLocationHandler(_ url: URL) { Preferences.scriptsDirectoryUrl = url - webView.evaluateJavaScript("webapp.updateDirectory('\(getCurrentScriptsDirectoryString())')") + self.updateCurrentDirectory() } func exportLogFiles() { @@ -367,7 +371,7 @@ extension ViewController { // try set new save location path to bookmark guard setSaveLocationURL(url: url) else { return } // update user interface text display - self.webView.evaluateJavaScript("webapp.updateDirectory('\(getCurrentScriptsDirectoryString())')") + self.updateCurrentDirectory() // notify browser extension of relevant updates sendExtensionMessage( name: "SAVE_LOCATION_CHANGED",