From 54da88755743786904d5013a5a1d211bcd1d15ed Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Tue, 29 Dec 2020 21:28:25 +0800 Subject: [PATCH] fix(editor): don't update block if there's no changes except the timestamps --- src/main/frontend/components/block.cljs | 11 ++++++++--- src/main/frontend/handler/editor.cljs | 7 ++----- src/main/frontend/text.cljs | 8 ++++++++ 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/main/frontend/components/block.cljs b/src/main/frontend/components/block.cljs index dbdc70910..ec92b98e2 100644 --- a/src/main/frontend/components/block.cljs +++ b/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" "")}} diff --git a/src/main/frontend/handler/editor.cljs b/src/main/frontend/handler/editor.cljs index ca0b9973e..0df7c7ade 100644 --- a/src/main/frontend/handler/editor.cljs +++ b/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)) - diff --git a/src/main/frontend/text.cljs b/src/main/frontend/text.cljs index 64347854d..aa3c96fdd 100644 --- a/src/main/frontend/text.cljs +++ b/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)