fix(mobile): unlink did not create parent dir correctly

This commit is contained in:
Andelf
2022-09-19 02:28:34 +08:00
parent 634c5010a5
commit f71a80341e

View File

@@ -82,7 +82,7 @@
(p/let [d (first dirs)
files (<readdir d)
files (->> files
(remove (fn [{:keys [name type] :as file-info}]
(remove (fn [{:keys [name type]}]
(or (string/starts-with? name ".")
(and (= type "directory")
(or (= name "bak")
@@ -211,7 +211,7 @@
(defn get-file-path [dir path]
(let [dir (some-> dir (string/replace #"/+$" ""))
dir (if (string/starts-with? dir "/")
dir (if (and (not-empty dir) (string/starts-with? dir "/"))
(do
(js/console.trace "WARN: detect absolute path, use URL instead")
(str "file://" (js/encodeURI dir)))
@@ -261,13 +261,18 @@
(log/error :mkdir! {:path dir
:error error})))))
(mkdir-recur! [_this dir]
(p/let [result (.mkdir Filesystem
(clj->js
{:path dir
;; :directory (.-ExternalStorage Directory)
:recursive true}))]
(js/console.log result)
result))
(p/let
[_ (-> (.mkdir Filesystem
(clj->js
{:path dir
:recursive true}))
(p/catch (fn [error]
(log/error :mkdir-recur! {:path dir
:error error}))))
stat (<stat dir)]
(if (= (:type stat) "directory")
(p/resolved true)
(p/rejected (js/Error. "mkdir-recur! failed")))))
(readdir [_this dir] ; recursive
(let [dir (if-not (string/starts-with? dir "file://")
(str "file://" dir)
@@ -276,13 +281,13 @@
(unlink! [this repo path _opts]
(p/let [path (get-file-path nil path)
repo-url (config/get-local-dir repo)
recycle-dir (str repo-url config/app-name "/.recycle") ;; logseq/.recycle
recycle-dir (util/safe-path-join repo-url config/app-name ".recycle") ;; logseq/.recycle
;; convert url to pure path
file-name (-> (string/replace path repo-url "")
(string/replace "/" "_")
(string/replace "\\" "_"))
new-path (str recycle-dir "/" file-name)]
(protocol/mkdir! this recycle-dir)
new-path (str recycle-dir "/" file-name)
_ (protocol/mkdir-recur! this recycle-dir)]
(protocol/rename! this repo path new-path)))
(rmdir! [_this _dir]
;; Too dangerous!!! We'll never implement this.
@@ -320,11 +325,7 @@
(log/error :copy-file-failed error)))))
(stat [_this dir path]
(let [path (get-file-path dir path)]
(p/let [result (.stat Filesystem (clj->js
{:path path
;; :directory (.-ExternalStorage Directory)
}))]
result)))
(<stat path)))
(open-dir [_this _ok-handler]
(p/let [_ (when (mobile-util/native-android?) (android-check-permission))
{:keys [path localDocumentsPath]} (-> (.pickFolder mobile-util/folder-picker)