Ver código fonte

fix: Capacitor readdir

Tienson Qin 3 anos atrás
pai
commit
6f262a10d7
2 arquivos alterados com 23 adições e 20 exclusões
  1. 7 3
      src/main/frontend/core.cljs
  2. 16 17
      src/main/frontend/fs/capacitor_fs.cljs

+ 7 - 3
src/main/frontend/core.cljs

@@ -11,7 +11,9 @@
             [reitit.frontend :as rf]
             [reitit.frontend.easy :as rfe]
             [logseq.api]
-            [frontend.fs.sync :as sync]))
+            [frontend.fs.sync :as sync]
+            [frontend.config :as config]
+            [frontend.util :as util]))
 
 (defn set-router!
   []
@@ -46,7 +48,8 @@
     (rum/mount (page/current-page) node)
     (display-welcome-message)
     (persist-var/load-vars)
-    (js/setTimeout #(sync/sync-start) 1000)))
+    (when (and config/dev? (util/electron?))
+      (js/setTimeout #(sync/sync-start) 1000))))
 
 (defn ^:export init []
   ;; init is called ONCE when the page loads
@@ -66,5 +69,6 @@
   ;; stop is called before any code is reloaded
   ;; this is controlled by :before-load in the config
   (handler/stop!)
-  (sync/<sync-stop)
+  (when (and config/dev? (util/electron?))
+    (sync/<sync-stop))
   (js/console.log "stop"))

+ 16 - 17
src/main/frontend/fs/capacitor_fs.cljs

@@ -54,7 +54,7 @@
 
 (defn- <readdir [path]
   (-> (p/chain (.readdir Filesystem (clj->js {:path path}))
-               js->clj
+               #(js->clj % :keywordize-keys true)
                #(get % "files" nil))
       (p/catch (fn [error]
                  (js/console.error "readdir Error: " path ": " error)
@@ -83,26 +83,25 @@
                              files (<readdir d)
                              files (->> files
                                         (remove (fn [file]
-                                                  (or (string/starts-with? file ".")
-                                                      (and (mobile-util/native-android?)
-                                                           (or (string/includes? file "#")
-                                                               (string/includes? file "%")))
-                                                      (= file "bak")))))
-                             files (->> files
-                                        (map (fn [file]
-                                               ;; TODO: use uri-join
-                                               (str (string/replace d #"/+$" "")
-                                                    "/"
-                                                    (if (mobile-util/native-ios?)
-                                                      (js/encodeURI file)
-                                                      file)))))
-                             files-with-stats (p/all (mapv <stat files))
-                             files-dir (->> files-with-stats
+                                                  (let [uri (:uri file)]
+                                                    (or (string/starts-with? uri ".")
+                                                        (= file "bak"))))))
+                             files (map (fn [file]
+                                          ;; TODO: use uri-join
+                                          (update file :uri
+                                                  (fn [uri]
+                                                    (str (string/replace d #"/+$" "")
+                                                        "/"
+                                                        (if (mobile-util/native-ios?)
+                                                          (js/encodeURI uri)
+                                                          uri)))))
+                                     files)
+                             files-dir (->> files
                                             (filterv #(= (:type %) "directory"))
                                             (mapv :uri))
                              files-result
                              (p/all
-                              (->> files-with-stats
+                              (->> files
                                    (filter #(= (:type %) "file"))
                                    (filter
                                     (fn [{:keys [uri]}]