Browse Source

fix: roam import

Tienson Qin 5 years ago
parent
commit
449c9d9e65

+ 11 - 7
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]

+ 14 - 7
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]

+ 8 - 6
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])))

+ 1 - 1
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)