Procházet zdrojové kódy

fix(editor): don't update block if there's no changes except the timestamps

Tienson Qin před 5 roky
rodič
revize
54da887557

+ 8 - 3
src/main/frontend/components/block.cljs

@@ -1055,7 +1055,7 @@
         block-cp))))
 
 (rum/defc properties-cp
-  [block]
+  [config block]
   (let [properties (apply dissoc (:block/properties block) text/hidden-properties)]
     (when (seq properties)
       [:div.blocks-properties.text-sm.opacity-80.my-1.p-2
@@ -1064,7 +1064,12 @@
          [:div.my-1
           [:b k]
           [:span.mr-1 ":"]
-          (inline-text (:block/format block) (str v))])])))
+          (if (coll? v)
+            (let [v (->> (remove string/blank? v)
+                         (filter string?))]
+              (for [v-item v]
+                (page-cp config {:page/name v-item})))
+            (inline-text (:block/format block) (str v)))])])))
 
 (rum/defcs timestamp-cp < rum/reactive
   (rum/local false ::show?)
@@ -1169,7 +1174,7 @@
                  (let [hidden? (text/properties-hidden? properties)]
                    (not hidden?))
                  (not (:slide? config)))
-        (properties-cp block))
+        (properties-cp config block))
 
       (when (and (not pre-block?) (seq body))
         [:div.block-body {:style {:display (if collapsed? "none" "")}}

+ 2 - 5
src/main/frontend/handler/editor.cljs

@@ -458,10 +458,8 @@
                       (medley/remove-keys (fn [k] (contains? (set remove-properties) k)) properties)
                       properties)
          value (text/re-construct-block-properties value properties)
-         content-changed? (if auto-save?
-                            (not= (text/remove-properties! (string/trim content))
-                                  (text/remove-properties! (string/trim value)))
-                            (not= (string/trim content) (string/trim value)))]
+         content-changed? (not= (text/remove-timestamp-property! (string/trim content))
+                                (text/remove-timestamp-property! (string/trim value)))]
      (cond
        content-changed?
        (let [file (db/entity repo (:db/id file))]
@@ -2065,4 +2063,3 @@
 (defn periodically-save!
   []
   (js/setInterval save-current-block-when-idle! 3000))
-

+ 8 - 0
src/main/frontend/text.cljs

@@ -114,6 +114,14 @@
                                  (and id (util/uuid-string? id)))))))]
     (string/join "\n" lines)))
 
+(defn remove-timestamp-property!
+  [content]
+  (let [lines (->> (string/split-lines content)
+                   (remove #(let [s (string/lower-case (string/trim %))]
+                              (or (string/starts-with? s ":created_at:")
+                                  (string/starts-with? s ":last_modified_at:")))))]
+    (string/join "\n" lines)))
+
 (defn build-properties-str
   [properties]
   (when (seq properties)