Просмотр исходного кода

enhance(rtc): sync block/journal-day attr

rcmerci 1 год назад
Родитель
Сommit
723fd6aff1

+ 4 - 2
src/main/frontend/worker/rtc/const.cljs

@@ -14,7 +14,8 @@
    [:tags {:optional true} [:maybe [:sequential :uuid]]]
    [:properties {:optional true} [:maybe :string ; transit-json-string
                                   ]]
-   [:link {:optional true} [:maybe :uuid]]])
+   [:link {:optional true} [:maybe :uuid]]
+   [:journal-day {:optional true} [:maybe :int]]])
 
 (def general-attr-set
   (into #{} (map first) general-attrs-schema-coll))
@@ -58,7 +59,8 @@
                                      [:add {:optional true} [:sequential [:cat :uuid :string ;; transit-string
                                                                           ]]]
                                      [:retract {:optional true} [:set :uuid]]]]
-      [:link {:optional true} :uuid]]]]
+      [:link {:optional true} :uuid]
+      [:journal-day {:optional true} :int]]]]
    [:update-page
     [:cat :keyword
      [:map

+ 24 - 7
src/main/frontend/worker/rtc/core.cljs

@@ -310,8 +310,10 @@
                 (cond-> b-ent
                   (and (contains? key-set :content)
                        (not= (:content op-value)
-                             (:block/raw-content b-ent))) (assoc :block/content
-                                                                 (special-id-ref->page @conn (:content op-value)))
+                             (:block/raw-content b-ent)))
+                  (assoc :block/content
+                         (special-id-ref->page @conn (:content op-value)))
+
                   (contains? key-set :updated-at)     (assoc :block/updated-at (:updated-at op-value))
                   (contains? key-set :created-at)     (assoc :block/created-at (:created-at op-value))
                   (contains? key-set :alias)          (assoc :block/alias (some->> (seq (:alias op-value))
@@ -319,17 +321,27 @@
                                                                                    (d/pull-many @conn [:db/id])
                                                                                    (keep :db/id)))
                   (contains? key-set :type)           (assoc :block/type (:type op-value))
-                  (contains? key-set :schema)         (assoc :block/schema (transit/read transit-r (:schema op-value)))
+                  (and (contains? key-set :schema)
+                       (some? (:schema op-value)))
+                  (assoc :block/schema (transit/read transit-r (:schema op-value)))
+
                   (contains? key-set :tags)           (assoc :block/tags (some->> (seq (:tags op-value))
                                                                                   (map (partial vector :block/uuid))
                                                                                   (d/pull-many @conn [:db/id])
                                                                                   (keep :db/id)))
                   (contains? key-set :properties)     (assoc :block/properties
                                                              (transit/read transit-r (:properties op-value)))
-                  (contains? key-set :link)           (assoc :block/link (some->> (:link op-value)
-                                                                                  (vector :block/uuid)
-                                                                                  (d/pull @conn [:db/id])
-                                                                                  :db/id)))
+                  (and (contains? key-set :link)
+                       (some? (:link op-value)))
+                  (assoc :block/link (some->> (:link op-value)
+                                              (vector :block/uuid)
+                                              (d/pull @conn [:db/id])
+                                              :db/id))
+
+                  (and (contains? key-set :journal-day)
+                       (some? (:journal-day op-value)))
+                  (assoc :block/journal-day (:journal-day op-value)
+                         :block/journal? true))
                 *other-tx-data (atom [])]
             ;; 'save-block' dont handle card-many attrs well?
             (when (contains? key-set :alias)
@@ -344,6 +356,10 @@
               (swap! *other-tx-data conj [:db/retract db-id :block/schema]))
             (when (and (contains? key-set :properties) (nil? (:properties op-value)))
               (swap! *other-tx-data conj [:db/retract db-id :block/properties]))
+            (when (and (contains? key-set :journal-day) (nil? (:journal-day op-value)))
+              (swap! *other-tx-data conj
+                     [:db/retract db-id :block/journal-day]
+                     [:db/retract db-id :block/journal?]))
             (when (seq @*other-tx-data)
               (ldb/transact! conn @*other-tx-data {:persist-op? false}))
             (transact-db! :save-block repo conn date-formatter new-block)))))))
@@ -580,6 +596,7 @@
     (swap! *remote-ops conj
            [:update
             (cond-> {:block-uuid block-uuid}
+              (:block/journal-day block)      (assoc :journal-day (:block/journal-day block))
               (:block/updated-at block)       (assoc :updated-at (:block/updated-at block))
               (:block/created-at block)       (assoc :created-at (:block/created-at block))
               (contains? attr-map :schema)    (assoc :schema

+ 7 - 1
src/main/frontend/worker/rtc/full_upload_download_graph.cljs

@@ -100,6 +100,12 @@
            parent
            (page-of-block id->block-map parent)))))))
 
+(defn- convert-block-fields
+  [block]
+  (cond-> block
+    (:block/journal-day block) (assoc :block/journal? true)
+    true                       (assoc :block/format :markdown)))
+
 (defn- fill-block-fields
   [blocks]
   (let [groups (group-by #(boolean (:block/name %)) blocks)
@@ -108,7 +114,7 @@
         id->block (into {} (map (juxt :db/id identity) blocks))
         block-id->page-id (into {} (map (fn [b] [(:db/id b) (:db/id (page-of-block id->block b))]) other-blocks))]
     (mapv (fn [b]
-            (let [b (assoc b :block/format :markdown)]
+            (let [b (convert-block-fields b)]
               (if-let [page-id (block-id->page-id (:db/id b))]
                 (assoc b :block/page page-id)
                 b)))