|
|
@@ -29,59 +29,6 @@
|
|
|
;; 1. User changes the config.edn directly in logseq.com (fn: alter-file)
|
|
|
;; 2. Git pulls the new change (fn: load-files)
|
|
|
|
|
|
-(defn load-repo-to-db!
|
|
|
- [repo-url diffs first-clone?]
|
|
|
- (let [load-contents (fn [files delete-files delete-blocks re-render?]
|
|
|
- (file-handler/load-files-contents!
|
|
|
- repo-url
|
|
|
- files
|
|
|
- (fn [contents]
|
|
|
- (state/set-state! :repo/loading-files? false)
|
|
|
- (state/set-state! :repo/importing-to-db? true)
|
|
|
- (let [parsed-files (filter
|
|
|
- (fn [[file _]]
|
|
|
- (let [format (format/get-format file)]
|
|
|
- (contains? config/mldoc-support-formats format)))
|
|
|
- contents)
|
|
|
- blocks-pages (if (seq parsed-files)
|
|
|
- (db/extract-all-blocks-pages repo-url parsed-files)
|
|
|
- [])]
|
|
|
- (db/reset-contents-and-blocks! repo-url contents blocks-pages delete-files delete-blocks)
|
|
|
- (let [config-file (str config/app-name "/" config/config-file)]
|
|
|
- (when (contains? (set files) config-file)
|
|
|
- (when-let [content (get contents config-file)]
|
|
|
- (file-handler/restore-config! repo-url content true))))
|
|
|
- ;; (let [metadata-file (str config/app-name "/" config/metadata-file)]
|
|
|
- ;; (when (contains? (set files) metadata-file)
|
|
|
- ;; (when-let [content (get contents metadata-file)]
|
|
|
- ;; (let [{:keys [tx-data]} (reader/read-string content)]
|
|
|
- ;; (db/transact! repo-url tx-data)))))
|
|
|
- (state/set-state! :repo/importing-to-db? false)
|
|
|
- (when re-render?
|
|
|
- (ui-handler/re-render-root!))))))]
|
|
|
- (if first-clone?
|
|
|
- (->
|
|
|
- (p/let [files (file-handler/load-files repo-url)]
|
|
|
- (load-contents files nil nil false))
|
|
|
- (p/catch (fn [error]
|
|
|
- (println "loading files failed: ")
|
|
|
- (js/console.dir error)
|
|
|
- (state/set-state! :repo/loading-files? false))))
|
|
|
- (when (seq diffs)
|
|
|
- (let [filter-diffs (fn [type] (->> (filter (fn [f] (= type (:type f))) diffs)
|
|
|
- (map :path)))
|
|
|
- remove-files (filter-diffs "remove")
|
|
|
- modify-files (filter-diffs "modify")
|
|
|
- add-files (filter-diffs "add")
|
|
|
- delete-files (if (seq remove-files)
|
|
|
- (db/delete-files remove-files))
|
|
|
- delete-blocks (db/delete-blocks repo-url (concat remove-files modify-files))
|
|
|
- delete-pages (if (seq remove-files)
|
|
|
- (db/delete-pages-by-files remove-files)
|
|
|
- [])
|
|
|
- add-or-modify-files (util/remove-nils (concat add-files modify-files))]
|
|
|
- (load-contents add-or-modify-files (concat delete-files delete-pages) delete-blocks true))))))
|
|
|
-
|
|
|
(defn show-install-error!
|
|
|
[repo-url title]
|
|
|
(notification/show!
|
|
|
@@ -196,7 +143,7 @@
|
|
|
(create-today-journal-if-not-exists repo-url nil))
|
|
|
([repo-url content]
|
|
|
(let [repo-dir (util/get-repo-dir repo-url)
|
|
|
- format (state/get-preferred-format)
|
|
|
+ format (state/get-preferred-format repo-url)
|
|
|
title (date/today)
|
|
|
file-name (date/journal-title->default title)
|
|
|
default-content (util/default-content-with-title format title false)
|
|
|
@@ -240,6 +187,55 @@
|
|
|
(create-today-journal-if-not-exists repo-url)
|
|
|
(create-contents-file repo-url)))
|
|
|
|
|
|
+(defn load-repo-to-db!
|
|
|
+ [repo-url diffs first-clone?]
|
|
|
+ (let [load-contents (fn [files delete-files delete-blocks re-render?]
|
|
|
+ (file-handler/load-files-contents!
|
|
|
+ repo-url
|
|
|
+ files
|
|
|
+ (fn [contents]
|
|
|
+ (state/set-state! :repo/loading-files? false)
|
|
|
+ (state/set-state! :repo/importing-to-db? true)
|
|
|
+ (let [parsed-files (filter
|
|
|
+ (fn [[file _]]
|
|
|
+ (let [format (format/get-format file)]
|
|
|
+ (contains? config/mldoc-support-formats format)))
|
|
|
+ contents)
|
|
|
+ blocks-pages (if (seq parsed-files)
|
|
|
+ (db/extract-all-blocks-pages repo-url parsed-files)
|
|
|
+ [])]
|
|
|
+ (db/reset-contents-and-blocks! repo-url contents blocks-pages delete-files delete-blocks)
|
|
|
+ (let [config-file (str config/app-name "/" config/config-file)]
|
|
|
+ (if (contains? (set files) config-file)
|
|
|
+ (when-let [content (get contents config-file)]
|
|
|
+ (file-handler/restore-config! repo-url content true))))
|
|
|
+ (when first-clone? (create-default-files! repo-url))
|
|
|
+ (state/set-state! :repo/importing-to-db? false)
|
|
|
+ (when re-render?
|
|
|
+ (ui-handler/re-render-root!))))))]
|
|
|
+ (if first-clone?
|
|
|
+ (->
|
|
|
+ (p/let [files (file-handler/load-files repo-url)]
|
|
|
+ (load-contents files nil nil false))
|
|
|
+ (p/catch (fn [error]
|
|
|
+ (println "loading files failed: ")
|
|
|
+ (js/console.dir error)
|
|
|
+ (state/set-state! :repo/loading-files? false))))
|
|
|
+ (when (seq diffs)
|
|
|
+ (let [filter-diffs (fn [type] (->> (filter (fn [f] (= type (:type f))) diffs)
|
|
|
+ (map :path)))
|
|
|
+ remove-files (filter-diffs "remove")
|
|
|
+ modify-files (filter-diffs "modify")
|
|
|
+ add-files (filter-diffs "add")
|
|
|
+ delete-files (if (seq remove-files)
|
|
|
+ (db/delete-files remove-files))
|
|
|
+ delete-blocks (db/delete-blocks repo-url (concat remove-files modify-files))
|
|
|
+ delete-pages (if (seq remove-files)
|
|
|
+ (db/delete-pages-by-files remove-files)
|
|
|
+ [])
|
|
|
+ add-or-modify-files (util/remove-nils (concat add-files modify-files))]
|
|
|
+ (load-contents add-or-modify-files (concat delete-files delete-pages) delete-blocks true))))))
|
|
|
+
|
|
|
(defn persist-repo!
|
|
|
[repo]
|
|
|
(when-let [files-conn (db/get-files-conn repo)]
|
|
|
@@ -251,9 +247,6 @@
|
|
|
[repo-url diffs first-clone?]
|
|
|
(when (or diffs first-clone?)
|
|
|
(p/let [_ (load-repo-to-db! repo-url diffs first-clone?)]
|
|
|
- (when first-clone?
|
|
|
- (create-default-files! repo-url))
|
|
|
-
|
|
|
(when first-clone?
|
|
|
(migration-handler/show!)))))
|
|
|
|