Browse Source

refactor(db): with-dummy-block

defclass 5 years ago
parent
commit
bf44d9e593

+ 3 - 2
src/main/frontend/components/journal.cljs

@@ -18,7 +18,8 @@
             [frontend.components.page :as page]
             [frontend.components.onboarding :as onboarding]
             [goog.object :as gobj]
-            [clojure.string :as string]))
+            [clojure.string :as string]
+            [frontend.handler.block :as block-handler]))
 
 (rum/defc blocks-inner < rum/static
   {:did-mount (fn [state]
@@ -56,7 +57,7 @@
   (let [raw-blocks (db/get-page-blocks repo page)
         document-mode? (state/sub :document/mode?)
         blocks (->>
-                (db/with-dummy-block raw-blocks format nil {:journal? true})
+                (block-handler/with-dummy-block raw-blocks format nil {:journal? true})
                 (db/with-block-refs-count repo))]
     (blocks-inner blocks page document-mode?)))
 

+ 3 - 2
src/main/frontend/components/page.cljs

@@ -35,7 +35,8 @@
             [cljs-time.core :as t]
             [cljs.pprint :as pprint]
             [frontend.context.i18n :as i18n]
-            [reitit.frontend.easy :as rfe]))
+            [reitit.frontend.easy :as rfe]
+            [frontend.handler.block :as block-handler]))
 
 (defn- get-page-name
   [state]
@@ -55,7 +56,7 @@
   db-mixins/query
   [repo page file-path page-name page-original-name encoded-page-name sidebar? journal? block? block-id format]
   (let [raw-page-blocks (get-blocks repo page-name page-original-name block? block-id)
-        page-blocks (db/with-dummy-block raw-page-blocks format
+        page-blocks (block-handler/with-dummy-block raw-page-blocks format
                       (if (empty? raw-page-blocks)
                         (let [content (db/get-file repo file-path)]
                           {:block/page {:db/id (:db/id page)}

File diff suppressed because it is too large
+ 0 - 0
src/main/frontend/db.cljs


+ 0 - 42
src/main/frontend/db/model.cljs

@@ -971,48 +971,6 @@
            (get-page-format page)])
         pages)))))
 
-(defn with-dummy-block
-  ([blocks format]
-   (with-dummy-block blocks format {} {}))
-  ([blocks format default-option {:keys [journal? page-name]
-                                  :or {journal? false}}]
-   (let [format (or format (state/get-preferred-format) :markdown)
-         blocks (if (and journal?
-                         (seq blocks)
-                         (when-let [title (second (first (:block/title (first blocks))))]
-                           (date/valid-journal-title? title)))
-                  (rest blocks)
-                  blocks)
-         blocks (vec blocks)]
-     (cond
-       (and (seq blocks)
-            (or (and (> (count blocks) 1)
-                     (:block/pre-block? (first blocks)))
-                (and (>= (count blocks) 1)
-                     (not (:block/pre-block? (first blocks))))))
-       blocks
-
-       :else
-       (let [last-block (last blocks)
-             end-pos (get-in last-block [:block/meta :end-pos] 0)
-             dummy (merge last-block
-                          (let [uuid (d/squuid)]
-                            {:block/uuid uuid
-                             :block/title ""
-                             :block/content (config/default-empty-block format)
-                             :block/format format
-                             :block/level 2
-                             :block/priority nil
-                             :block/anchor (str uuid)
-                             :block/meta {:start-pos end-pos
-                                          :end-pos end-pos}
-                             :block/body nil
-                             :block/dummy? true
-                             :block/marker nil
-                             :block/pre-block? false})
-                          default-option)]
-         (conj blocks dummy))))))
-
 ;; get pages that this page referenced
 (defn get-page-referenced-pages
   [repo page]

+ 46 - 1
src/main/frontend/handler/block.cljs

@@ -3,7 +3,10 @@
             [clojure.walk :as walk]
             [frontend.db :as db]
             [frontend.state :as state]
-            [frontend.format.mldoc :as mldoc]))
+            [frontend.format.mldoc :as mldoc]
+            [frontend.date :as date]
+            [frontend.config :as config]
+            [datascript.core :as d]))
 
 (defn blocks->vec-tree [col]
   (let [col (map (fn [h] (cond->
@@ -134,3 +137,45 @@
               (every? (fn [[[typ break-lines]] _]
                         (and (= typ "Paragraph")
                              (every? #(= % ["Break_Line"]) break-lines))) (rest ast))))))))
+
+(defn with-dummy-block
+  ([blocks format]
+   (with-dummy-block blocks format {} {}))
+  ([blocks format default-option {:keys [journal? page-name]
+                                  :or {journal? false}}]
+   (let [format (or format (state/get-preferred-format) :markdown)
+         blocks (if (and journal?
+                      (seq blocks)
+                      (when-let [title (second (first (:block/title (first blocks))))]
+                        (date/valid-journal-title? title)))
+                  (rest blocks)
+                  blocks)
+         blocks (vec blocks)]
+     (cond
+       (and (seq blocks)
+         (or (and (> (count blocks) 1)
+               (:block/pre-block? (first blocks)))
+           (and (>= (count blocks) 1)
+             (not (:block/pre-block? (first blocks))))))
+       blocks
+
+       :else
+       (let [last-block (last blocks)
+             end-pos (get-in last-block [:block/meta :end-pos] 0)
+             dummy (merge last-block
+                     (let [uuid (d/squuid)]
+                       {:block/uuid uuid
+                        :block/title ""
+                        :block/content (config/default-empty-block format)
+                        :block/format format
+                        :block/level 2
+                        :block/priority nil
+                        :block/anchor (str uuid)
+                        :block/meta {:start-pos end-pos
+                                     :end-pos end-pos}
+                        :block/body nil
+                        :block/dummy? true
+                        :block/marker nil
+                        :block/pre-block? false})
+                     default-option)]
+         (conj blocks dummy))))))

Some files were not shown because too many files changed in this diff