|
@@ -18,7 +18,8 @@
|
|
|
[frontend.fs :as fs]
|
|
|
[frontend.fs.capacitor-fs :as capacitor-fs]
|
|
|
[frontend.util.fs :as fs-util]
|
|
|
- [frontend.util :as util]))
|
|
|
+ [frontend.util :as util]
|
|
|
+ [clojure.set :as set]))
|
|
|
|
|
|
;; all IPC paths must be normalized! (via gp-util/path-normalize)
|
|
|
|
|
@@ -119,12 +120,21 @@
|
|
|
(defn load-graph-files!
|
|
|
[graph]
|
|
|
(when graph
|
|
|
- (let [dir (config/get-repo-dir graph)]
|
|
|
- (p/let [files (fs/readdir dir :path-only? true)]
|
|
|
- (doseq [file files]
|
|
|
- (when-let [_ext (util/get-file-ext file)]
|
|
|
- (->
|
|
|
- (when-not (fs-util/ignored-path? dir file)
|
|
|
+ (let [dir (config/get-repo-dir graph)
|
|
|
+ db-files (->> (db/get-files graph)
|
|
|
+ (map first)
|
|
|
+ (filter #(string/starts-with? % (config/get-repo-dir graph))))]
|
|
|
+ (p/let [files (fs/readdir dir :path-only? true)
|
|
|
+ files (remove #(fs-util/ignored-path? dir %) files)]
|
|
|
+ (let [deleted-files (set/difference (set db-files) (set files))]
|
|
|
+ (when (seq deleted-files)
|
|
|
+ (let [delete-tx-data (->> (db/delete-files deleted-files)
|
|
|
+ (concat (db/delete-blocks graph files nil))
|
|
|
+ (remove nil?))]
|
|
|
+ (db/transact! graph delete-tx-data)))
|
|
|
+ (doseq [file files]
|
|
|
+ (when-let [_ext (util/get-file-ext file)]
|
|
|
+ (->
|
|
|
(p/let [content (fs/read-file dir file)
|
|
|
stat (fs/stat dir file)
|
|
|
type (if (db/file-exists? graph file)
|
|
@@ -134,6 +144,6 @@
|
|
|
{:dir dir
|
|
|
:path file
|
|
|
:content content
|
|
|
- :stat stat})))
|
|
|
- (p/catch (fn [error]
|
|
|
- (js/console.dir error))))))))))
|
|
|
+ :stat stat}))
|
|
|
+ (p/catch (fn [error]
|
|
|
+ (js/console.dir error)))))))))))
|