Browse Source

fix: handle situations when block values have been retracted

Tienson Qin 1 year ago
parent
commit
4828cfa17d

+ 1 - 1
deps/db/src/logseq/db/frontend/property.cljs

@@ -278,7 +278,7 @@
 
 (defn get-pair-e
   [block db-ident]
-  (first (filter #(contains? (set (keys %)) db-ident) (:block/raw-properties block))))
+  (first (filter #(= (:db/ident (:property/pair-property %)) db-ident) (:block/raw-properties block))))
 
 (defn get-block-property-value
   "Get the value of built-in block's property by its db-ident"

+ 5 - 10
src/main/frontend/components/property/value.cljs

@@ -67,14 +67,6 @@
   (state/set-state! :editor/editing-property-value-id {})
   (state/clear-edit!))
 
-(defn set-editing!
-  [block property editor-id dom-id v opts]
-  (let [v (str v)
-        cursor-range (if dom-id
-                       (some-> (gdom/getElement dom-id) util/caret-range)
-                       "")]
-    (state/set-editing! editor-id v property cursor-range (assoc opts :property-block block))))
-
 (defn <add-property!
   "If a class and in a class schema context, add the property to its schema.
   Otherwise, add a block's property and its value"
@@ -648,8 +640,8 @@
       :class class
       :style {:min-height 24}
       :on-click (fn []
-                  ;; FIXME:
-                  )}
+                  (when (and (= type :default) (nil? value))
+                    (<create-new-block! block property "")))}
      (if (and (string/blank? value) template?)
        (let [id (first (:classes schema))
              template (when id (db/entity [:block/uuid id]))]
@@ -665,6 +657,9 @@
                                   value
                                   opts)
 
+         (and (= type :default) (nil? value))
+         (property-empty-value)
+
          (= type :default)
          (property-block-value value block property block-cp editor-box opts page-cp editor-id)
 

+ 9 - 3
src/main/frontend/worker/pipeline.cljs

@@ -11,7 +11,8 @@
             [logseq.db.sqlite.util :as sqlite-util]
             [logseq.outliner.datascript-report :as ds-report]
             [logseq.outliner.pipeline :as outliner-pipeline]
-            [logseq.db.frontend.property :as db-property]))
+            [logseq.db.frontend.property :as db-property]
+            [logseq.outliner.core :as outliner-core]))
 
 (defn- path-refs-need-recalculated?
   [tx-meta]
@@ -42,9 +43,14 @@
        (mapcat (fn [b]
                  (let [created-from-block (get b :logseq.property/created-from-block)
                        created-from-property (get b :logseq.property/created-from-property)
-                       created-block (d/entity after-db (:db/id created-from-block))]
+                       created-block (d/entity after-db (:db/id created-from-block))
+                       pair-e (db-property/get-pair-e created-from-block (:db/ident created-from-property))]
                    (when (and created-block created-from-property)
-                     [[:db/retractEntity (:db/id b)]])))
+                     [[:db/retractEntity (:db/id b)]
+                      (when pair-e
+                        (outliner-core/block-with-updated-at
+                         {:db/id (:db/id pair-e)
+                          :block/tx-id (get-in tx-report [:tempids :db/current-tx])}))])))
                empty-property-parents)
        (remove nil?)))))