From d801c96a52df1f5c5c5f918c5053862acfc44f4f Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Wed, 9 Nov 2022 20:18:30 +0800 Subject: [PATCH] fix: force /private part on iOS --- src/main/frontend/fs/capacitor_fs.cljs | 13 +++++++++---- src/main/frontend/handler/events.cljs | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/frontend/fs/capacitor_fs.cljs b/src/main/frontend/fs/capacitor_fs.cljs index d46b1722a..c23091039 100644 --- a/src/main/frontend/fs/capacitor_fs.cljs +++ b/src/main/frontend/fs/capacitor_fs.cljs @@ -212,10 +212,13 @@ (error-handler error) (log/error :write-file-failed error))))))))) -(defn remove-private-part - "iOS sometimes return the private part." +(defn ios-force-include-private + "iOS sometimes return paths without the private part." [path] - (string/replace path "///private/" "///")) + (if (string/includes? path "///private/") + path + (let [[prefix others] (string/split path "///")] + (str prefix "///private/" others)))) (defn normalize-file-protocol-path [dir path] (let [dir (some-> dir (string/replace #"/+$" "")) @@ -249,7 +252,9 @@ :else (let [path' (safe-encode-url path)] (str dir "/" path')))] - (remove-private-part path'))) + (if (mobile-util/native-ios?) + (ios-force-include-private path') + path'))) (defn- local-container-path? "Check whether `path' is logseq's container `localDocumentsPath' on iOS" diff --git a/src/main/frontend/handler/events.cljs b/src/main/frontend/handler/events.cljs index 63d3c7bf2..7f80defce 100644 --- a/src/main/frontend/handler/events.cljs +++ b/src/main/frontend/handler/events.cljs @@ -570,7 +570,7 @@ payload (-> event (js->clj :keywordize-keys true) (update :path (fn [path] - (when (string? path) (capacitor-fs/remove-private-part path)))))] + (when (string? path) (capacitor-fs/ios-force-include-private path)))))] (fs-watcher/handle-changed! type payload) (when (file-sync-handler/enable-sync?) (sync/file-watch-handler type payload))))