فهرست منبع

fix: property with multiple values

Tienson Qin 1 سال پیش
والد
کامیت
20504f7b7a
2فایلهای تغییر یافته به همراه15 افزوده شده و 19 حذف شده
  1. 3 3
      src/main/frontend/components/property/value.cljs
  2. 12 16
      src/main/frontend/handler/db_based/property.cljs

+ 3 - 3
src/main/frontend/components/property/value.cljs

@@ -217,12 +217,12 @@
                                      (:block/tags block)
                                      (:block/alias block))
                                    (map (fn [e] (:block/original-name e))))
-                              (when-let [v (get-in block [:block/properties (:db/ident property)])]
+                              (when-let [v (get block (:db/ident property))]
                                 (if (coll? v)
                                   (map (fn [id]
-                                         (:block/original-name (db/entity [:block/uuid id])))
+                                         (:block/original-name (db/entity id)))
                                        v)
-                                  [(:block/original-name (db/entity [:block/uuid v]))])))
+                                  [(:block/original-name (db/entity (:db/ident property)))])))
                             (remove nil?)))
         closed-values (seq (get-in property [:block/schema :values]))
         pages (->>

+ 12 - 16
src/main/frontend/handler/db_based/property.cljs

@@ -112,8 +112,8 @@
   (me/humanize (mu/explain-data schema value)))
 
 (defn- reset-block-property-multiple-values!
-  [repo block-id property-id values _opts]
-  (let [block (db/entity repo [:block/uuid block-id])
+  [repo block-eid property-id values _opts]
+  (let [block (db/entity repo block-eid)
         property (db/entity property-id)
         property-name (:block/original-name property)
         values (remove nil? values)
@@ -135,20 +135,16 @@
                               (map (fn [e] (:db/id e))))
                          (get block (:db/ident property)))]
         (when (not= old-values values')
-          (if tags-or-alias?
-            (db/transact! repo
-                          [[:db/retract (:db/id block) property-id]
-                           {:block/uuid block-id
-                            property-id values'}]
-                          {:outliner-op :save-block})
-            (if-let [msg (some #(validate-property-value schema %) values')]
-              (let [msg' (str "\"" property-name "\"" " " (if (coll? msg) (first msg) msg))]
-                (notification/show! msg' :warning))
-              (do
-                (upsert-property! repo property-id (assoc property-schema :type property-type) {})
-                (let [block {:block/uuid (:block/uuid block)
-                             property-id values'}]
-                  (db/transact! repo [block] {:outliner-op :save-block}))))))))))
+          (if-let [msg (some #(validate-property-value schema %) values')]
+            (let [msg' (str "\"" property-name "\"" " " (if (coll? msg) (first msg) msg))]
+              (notification/show! msg' :warning))
+            (do
+              (when-not tags-or-alias? (upsert-property! repo property-id (assoc property-schema :type property-type) {}))
+              (db/transact! repo
+                            [[:db/retract (:db/id block) property-id]
+                             {:db/id block-eid
+                              property-id values'}]
+                            {:outliner-op :save-block}))))))))
 
 (defn- resolve-tag
   "Change `v` to a tag's db id if v is a string tag, e.g. `#book`"