|
|
@@ -14,7 +14,6 @@
|
|
|
[frontend.handler.common.file :as file-common-handler]
|
|
|
[frontend.handler.route :as route-handler]
|
|
|
[frontend.handler.ui :as ui-handler]
|
|
|
- [frontend.handler.metadata :as metadata-handler]
|
|
|
[frontend.handler.global-config :as global-config-handler]
|
|
|
[frontend.idb :as idb]
|
|
|
[frontend.search :as search]
|
|
|
@@ -22,7 +21,6 @@
|
|
|
[frontend.state :as state]
|
|
|
[frontend.util :as util]
|
|
|
[frontend.util.fs :as util-fs]
|
|
|
- [lambdaisland.glogi :as log]
|
|
|
[promesa.core :as p]
|
|
|
[shadow.resource :as rc]
|
|
|
[frontend.db.persist :as db-persist]
|
|
|
@@ -128,52 +126,11 @@
|
|
|
(p/let [_ (fs/mkdir-if-not-exists (util/safe-path-join repo-dir config/app-name))
|
|
|
_ (fs/mkdir-if-not-exists (util/safe-path-join repo-dir (str config/app-name "/" config/recycle-dir)))
|
|
|
_ (fs/mkdir-if-not-exists (util/safe-path-join repo-dir (config/get-journals-directory)))
|
|
|
- _ (file-handler/create-metadata-file repo-url)
|
|
|
_ (repo-config-handler/create-config-file-if-not-exists repo-url)
|
|
|
_ (create-contents-file repo-url)
|
|
|
_ (create-custom-theme repo-url)]
|
|
|
(state/pub-event! [:page/create-today-journal repo-url]))))
|
|
|
|
|
|
-(defn- load-pages-metadata!
|
|
|
- "force?: if set true, skip the metadata timestamp range check"
|
|
|
- ([repo file-paths files]
|
|
|
- (load-pages-metadata! repo file-paths files false))
|
|
|
- ([repo file-paths files force?]
|
|
|
- (try
|
|
|
- (let [file (config/get-pages-metadata-path)]
|
|
|
- (when (contains? (set file-paths) file)
|
|
|
- (when-let [content (some #(when (= (:file/path %) file) (:file/content %)) files)]
|
|
|
- (let [metadata (common-handler/safe-read-string content "Parsing pages metadata file failed: ")
|
|
|
- pages (db/get-all-pages repo)
|
|
|
- pages (zipmap (map :block/name pages) pages)
|
|
|
- metadata (->>
|
|
|
- (filter (fn [{:block/keys [name created-at updated-at]}]
|
|
|
- (when-let [page (get pages name)]
|
|
|
- (and
|
|
|
- (>= updated-at created-at) ;; metadata validation
|
|
|
- (or force? ;; when force is true, shortcut timestamp range check
|
|
|
- (and (or (nil? (:block/created-at page))
|
|
|
- (>= created-at (:block/created-at page)))
|
|
|
- (or (nil? (:block/updated-at page))
|
|
|
- (>= updated-at (:block/created-at page)))))
|
|
|
- (or ;; persistent metadata is the gold standard
|
|
|
- (not= created-at (:block/created-at page))
|
|
|
- (not= updated-at (:block/created-at page)))))) metadata)
|
|
|
- (remove nil?))]
|
|
|
- (when (seq metadata)
|
|
|
- (db/transact! repo metadata {:new-graph? true}))))))
|
|
|
- (catch :default e
|
|
|
- (log/error :exception e)))))
|
|
|
-
|
|
|
-(defn update-pages-metadata!
|
|
|
- "update pages meta content -> db. Only accept non-encrypted content!"
|
|
|
- [repo content force?]
|
|
|
- (let [path (config/get-pages-metadata-path)
|
|
|
- files [{:file/path path
|
|
|
- :file/content content}]
|
|
|
- file-paths [path]]
|
|
|
- (load-pages-metadata! repo file-paths files force?)))
|
|
|
-
|
|
|
(defonce *file-tx (atom nil))
|
|
|
|
|
|
(defn- parse-and-load-file!
|
|
|
@@ -202,8 +159,7 @@
|
|
|
nil)))
|
|
|
|
|
|
(defn- after-parse
|
|
|
- [repo-url files file-paths re-render? re-render-opts opts graph-added-chan]
|
|
|
- (load-pages-metadata! repo-url file-paths files true)
|
|
|
+ [repo-url re-render? re-render-opts opts graph-added-chan]
|
|
|
(when (or (:new-graph? opts) (not (:refresh? opts)))
|
|
|
(create-default-files! repo-url))
|
|
|
(when re-render?
|
|
|
@@ -217,7 +173,7 @@
|
|
|
(async/offer! graph-added-chan true))
|
|
|
|
|
|
(defn- parse-files-and-create-default-files-inner!
|
|
|
- [repo-url files delete-files delete-blocks file-paths re-render? re-render-opts opts]
|
|
|
+ [repo-url files delete-files delete-blocks re-render? re-render-opts opts]
|
|
|
(let [supported-files (graph-parser/filter-files files)
|
|
|
delete-data (->> (concat delete-files delete-blocks)
|
|
|
(remove nil?))
|
|
|
@@ -239,7 +195,7 @@
|
|
|
(parse-and-load-file! repo-url file (assoc
|
|
|
(select-keys opts [:new-graph? :verbose])
|
|
|
:skip-db-transact? false)))
|
|
|
- (after-parse repo-url files file-paths re-render? re-render-opts opts graph-added-chan))
|
|
|
+ (after-parse repo-url re-render? re-render-opts opts graph-added-chan))
|
|
|
(async/go-loop [tx []]
|
|
|
(if-let [item (async/<! chan)]
|
|
|
(let [[idx file] item
|
|
|
@@ -267,18 +223,17 @@
|
|
|
(recur tx')))
|
|
|
(do
|
|
|
(when (seq tx) (db/transact! repo-url tx {:from-disk? true}))
|
|
|
- (after-parse repo-url files file-paths re-render? re-render-opts opts graph-added-chan)))))
|
|
|
+ (after-parse repo-url re-render? re-render-opts opts graph-added-chan)))))
|
|
|
graph-added-chan))
|
|
|
|
|
|
(defn- parse-files-and-create-default-files!
|
|
|
- [repo-url files delete-files delete-blocks file-paths re-render? re-render-opts opts]
|
|
|
- (parse-files-and-create-default-files-inner! repo-url files delete-files delete-blocks file-paths re-render? re-render-opts opts))
|
|
|
+ [repo-url files delete-files delete-blocks re-render? re-render-opts opts]
|
|
|
+ (parse-files-and-create-default-files-inner! repo-url files delete-files delete-blocks re-render? re-render-opts opts))
|
|
|
|
|
|
(defn parse-files-and-load-to-db!
|
|
|
[repo-url files {:keys [delete-files delete-blocks re-render? re-render-opts _refresh?] :as opts
|
|
|
:or {re-render? true}}]
|
|
|
- (let [file-paths (map :file/path files)]
|
|
|
- (parse-files-and-create-default-files! repo-url files delete-files delete-blocks file-paths re-render? re-render-opts opts)))
|
|
|
+ (parse-files-and-create-default-files! repo-url files delete-files delete-blocks re-render? re-render-opts opts))
|
|
|
|
|
|
(defn load-repo-to-db!
|
|
|
[repo-url {:keys [diffs nfs-files refresh? new-graph? empty-graph?]}]
|
|
|
@@ -427,8 +382,7 @@
|
|
|
(route-handler/redirect-to-home!)
|
|
|
(let [local? (config/local-db? repo)]
|
|
|
(if local?
|
|
|
- (p/let [_ (metadata-handler/set-pages-metadata! repo)]
|
|
|
- (nfs-rebuild-index! repo ok-handler))
|
|
|
+ (nfs-rebuild-index! repo ok-handler)
|
|
|
(rebuild-index! repo))
|
|
|
(js/setTimeout
|
|
|
(route-handler/redirect-to-home!)
|
|
|
@@ -444,7 +398,6 @@
|
|
|
(p/do!
|
|
|
(when before
|
|
|
(before))
|
|
|
- (metadata-handler/set-pages-metadata! repo)
|
|
|
(db/persist! repo)
|
|
|
(when on-success
|
|
|
(on-success)))
|