diff --git a/src/main/frontend/external/roam.cljs b/src/main/frontend/external/roam.cljs index b4114ce3a3..5284c5c29b 100644 --- a/src/main/frontend/external/roam.cljs +++ b/src/main/frontend/external/roam.cljs @@ -92,13 +92,17 @@ (defn ->file [page-data] (let [{:keys [create-time title children edit-time]} page-data - initial-level 2] - {:title title - :created-at create-time - :last-modified-at edit-time - :text (when-let [text (children->text children initial-level)] - (let [front-matter (util/format "---\ntitle: %s\n---\n\n" title)] - (str front-matter (transform text))))})) + initial-level 2 + text (when (seq children) + (when-let [text (children->text children initial-level)] + (let [front-matter (util/format "---\ntitle: %s\n---\n\n" title)] + (str front-matter (transform text)))))] + (when (and (not (string/blank? title)) + text) + {:title title + :created-at create-time + :last-modified-at edit-time + :text text}))) (defn ->files [edn-data] diff --git a/src/main/frontend/handler/external.cljs b/src/main/frontend/handler/external.cljs index c931afb11b..336094cbea 100644 --- a/src/main/frontend/handler/external.cljs +++ b/src/main/frontend/handler/external.cljs @@ -1,13 +1,16 @@ (ns frontend.handler.external (:require [frontend.external :as external] [frontend.handler.file :as file-handler] + [frontend.handler.repo :as repo-handler] [frontend.handler.common :as common-handler] [frontend.state :as state] [frontend.date :as date] [frontend.config :as config] [clojure.string :as string] + [promesa.core :as p] [frontend.db :as db])) +(defonce debug-files (atom nil)) (defn index-files! [repo files git-add-cb] (let [titles (->> files @@ -26,13 +29,17 @@ (date/journal-title->default title) (string/replace title "/" "-")) ".md")] - [path text])))) - files)] - ;; TODO: git add is quite slow - (file-handler/alter-files repo files {:add-history? false - :update-status? false - :reset? true - :git-add-cb git-add-cb}) + {:file/path path + :file/content text})))) + files) + files (remove nil? files) + _ (reset! debug-files files)] + (repo-handler/parse-files-and-load-to-db! repo files nil) + (let [files (map (fn [{:file/keys [path content]}] [path content]) files)] + (file-handler/alter-files repo files {:add-history? false + :update-db? false + :update-status? false + :git-add-cb git-add-cb})) (let [journal-pages-tx (let [titles (filter date/valid-journal-title? titles)] (map (fn [title] diff --git a/src/main/frontend/handler/file.cljs b/src/main/frontend/handler/file.cljs index 8bfbf3da36..f646b9cd1c 100644 --- a/src/main/frontend/handler/file.cljs +++ b/src/main/frontend/handler/file.cljs @@ -162,16 +162,18 @@ :path-params {:path path}})))))) (defn alter-files - [repo files {:keys [add-history? update-status? git-add-cb reset?] + [repo files {:keys [add-history? update-status? git-add-cb reset? update-db?] :or {add-history? true update-status? true - reset? false} + reset? false + update-db? true} :as opts}] ;; update db - (doseq [[path content] files] - (if reset? - (db/reset-file! repo path content) - (db/set-file-content! repo path content))) + (when update-db? + (doseq [[path content] files] + (if reset? + (db/reset-file! repo path content) + (db/set-file-content! repo path content)))) (when-let [chan (state/get-file-write-chan)] (async/put! chan [repo files opts]))) diff --git a/src/main/frontend/handler/repo.cljs b/src/main/frontend/handler/repo.cljs index 015a35ff78..18c7ea3536 100644 --- a/src/main/frontend/handler/repo.cljs +++ b/src/main/frontend/handler/repo.cljs @@ -158,7 +158,7 @@ (create-contents-file repo-url) (create-custom-theme repo-url)) -(defn- parse-files-and-load-to-db! +(defn parse-files-and-load-to-db! [repo-url files {:keys [first-clone? delete-files delete-blocks re-render? re-render-opts] :as opts :or {re-render? true}}] (state/set-loading-files! false)