Kaynağa Gözat

fix(asset-sync): don't generate asset-update op when unrelated attrs changed

rcmerci 1 yıl önce
ebeveyn
işleme
fca8202761

+ 8 - 2
src/main/frontend/worker/rtc/asset_db_listener.cljs

@@ -9,16 +9,22 @@
   [entity-datoms]
   (apply max (map (fn [[_e _a _v t]] t) entity-datoms)))
 
+(defn- asset-related-attrs-changed?
+  [entity-datoms]
+  (some (fn [[_e a]] (= :logseq.property.asset/checksum a)) entity-datoms))
+
 (defn- entity-datoms=>ops
   [db-before db-after entity-datoms]
   (when-let [e (ffirst entity-datoms)]
     (let [ent-after (d/entity db-after e)
           ent-before (d/entity db-before e)]
       (cond
-        (some-> ent-after ldb/asset?)
+        (and (some-> ent-after ldb/asset?)
+             (asset-related-attrs-changed? entity-datoms))
         [[:update-asset (max-t entity-datoms) {:block-uuid (:block/uuid ent-after)}]]
 
-        (some-> ent-before ldb/asset?)
+        (and (some-> ent-before ldb/asset?)
+             (nil? ent-after))
         [[:remove-asset (max-t entity-datoms) {:block-uuid (:block/uuid ent-before)}]]))))
 
 (defn generate-asset-ops