From 91f3dc3d41c54e105e9de5ebc2f9c7ca9417c0bc Mon Sep 17 00:00:00 2001 From: charlie Date: Tue, 31 Dec 2024 16:16:13 +0800 Subject: [PATCH 1/7] chore(dev): react keys warnings --- deps/shui/src/logseq/shui/shortcut/v1.cljs | 22 ++++++++++++---------- src/main/frontend/components/dnd.cljs | 2 +- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/deps/shui/src/logseq/shui/shortcut/v1.cljs b/deps/shui/src/logseq/shui/shortcut/v1.cljs index d235989535..0f02bfa119 100644 --- a/deps/shui/src/logseq/shui/shortcut/v1.cljs +++ b/deps/shui/src/logseq/shui/shortcut/v1.cljs @@ -62,26 +62,28 @@ "bg-transparent cursor-default active:bg-gray-03 hover:text-gray-11 opacity-80")) :size size} (for [[index tile] (map-indexed vector tiles)] - [:<> - (when (< 0 index) - [:span.ui__button__tile-separator]) - [:span.ui__button__tile tile]])))) + [:span {:key index} + [:<> + (when (< 0 index) + [:span.ui__button__tile-separator]) + [:span.ui__button__tile tile]]])))) (rum/defc root [shortcut & {:keys [size theme interactive?] - :or {size :xs - interactive? true - theme :gray}}] + :or {size :xs + interactive? true + theme :gray}}] (when (seq shortcut) (let [shortcuts (if (coll? shortcut) [shortcut] (parse-shortcuts shortcut)) opts {:interactive? interactive?}] (for [[index binding] (map-indexed vector shortcuts)] - [:<> + [:span + {:key (str index)} (when (< 0 index) - [:div.text-gray-11.text-sm {:key "sep"} "|"]) - (if (coll? (first binding)) ; + included + [:span.text-gray-11.text-sm {:key "sep"} "|"]) + (if (coll? (first binding)) ; + included (for [[idx ks] (map-indexed vector binding)] (rum/with-key (part ks size opts) diff --git a/src/main/frontend/components/dnd.cljs b/src/main/frontend/components/dnd.cljs index 02e354884a..1d7f2a48f5 100644 --- a/src/main/frontend/components/dnd.cljs +++ b/src/main/frontend/components/dnd.cljs @@ -94,7 +94,7 @@ :else (rum/with-key (sortable-item prop (:content item)) id)))) children' (if parent-node - [parent-node children] + [parent-node {:key "parent-node"} children] children)] (dnd-context dnd-opts From 4bcda991451e8767b4a4043461726dbb4869ad70 Mon Sep 17 00:00:00 2001 From: charlie Date: Tue, 31 Dec 2024 18:47:05 +0800 Subject: [PATCH 2/7] enhance(rum): adapt react class for the component friendly keys warning --- deps/shui/src/logseq/shui/util.cljs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/deps/shui/src/logseq/shui/util.cljs b/deps/shui/src/logseq/shui/util.cljs index 513538d943..b09c9229a3 100644 --- a/deps/shui/src/logseq/shui/util.cljs +++ b/deps/shui/src/logseq/shui/util.cljs @@ -60,11 +60,17 @@ [(first args) (rest args)] [{} args]) type# (first children) + children# (daiquiri.interpreter/interpret children) + children# (if (= 1 (count children#)) (first children#) children#) ;; we have to make sure to check if the children is sequential ;; as a list can be returned, eg: from a (for) - new-children (if (sequential? type#) - [(daiquiri.interpreter/interpret children)] - (daiquiri.interpreter/interpret children)) + new-children (if (and (not (nil? children#)) + (not (empty? children)) + (or (not (array? children#)) + ;; maybe list children + (not (vector? type#)))) + [children#] children#) + ;; convert any options key value to a React element, if ;; a valid html element tag is used, using sablono (rum.daiquiri) vector->react-elems (fn [[key val]] From a2b0afb5d94768bf751e5f2ce6eb8ab3a10a913d Mon Sep 17 00:00:00 2001 From: charlie Date: Wed, 1 Jan 2025 17:14:33 +0800 Subject: [PATCH 3/7] chore(dev): fix react warnings --- deps/shui/src/logseq/shui/util.cljs | 1 + src/main/frontend/components/container.cljs | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/deps/shui/src/logseq/shui/util.cljs b/deps/shui/src/logseq/shui/util.cljs index b09c9229a3..f9152e3dac 100644 --- a/deps/shui/src/logseq/shui/util.cljs +++ b/deps/shui/src/logseq/shui/util.cljs @@ -59,6 +59,7 @@ (let [[opts children] (if (map? (first args)) [(first args) (rest args)] [{} args]) + children (some->> children (remove nil?)) type# (first children) children# (daiquiri.interpreter/interpret children) children# (if (= 1 (count children#)) (first children#) children#) diff --git a/src/main/frontend/components/container.cljs b/src/main/frontend/components/container.cljs index f1990ff5c7..0b9fbc6133 100644 --- a/src/main/frontend/components/container.cljs +++ b/src/main/frontend/components/container.cljs @@ -372,7 +372,7 @@ :title (block-handler/block-unique-title page) :draggable true :on-drag-start (fn [event] (editor-handler/block->data-transfer! (:block/name page) event true)) - :data-ref name} + :data-ref (str name)} (page-name page (icon/get-node-icon-cp page {:size 16}) true)])]))) (defn get-default-home-if-valid @@ -380,7 +380,7 @@ (when-let [default-home (state/get-default-home)] (let [page (:page default-home) page (when (and (string? page) - (not (string/blank? page))) + (not (string/blank? page))) (db/get-page page))] (if page default-home From 961e00961fc64465fbca9c8750618dc72efc8433 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Thu, 2 Jan 2025 08:14:34 +0800 Subject: [PATCH 4/7] fix: migrate should prefer existing value --- src/main/frontend/worker/db/migrate.cljs | 29 ++++++++++++++++-------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/main/frontend/worker/db/migrate.cljs b/src/main/frontend/worker/db/migrate.cljs index 5e0230a6fc..1b72625ec5 100644 --- a/src/main/frontend/worker/db/migrate.cljs +++ b/src/main/frontend/worker/db/migrate.cljs @@ -597,24 +597,35 @@ (= (:db/ident data) :logseq.kv/schema-version) nil - (:db/ident data) - data - - (:block/name data) - (if-let [page (ldb/get-page @conn (:block/name data))] + (:block/uuid data) + (if-let [block (d/entity @conn [:block/uuid (:block/uuid data)])] (do - (swap! *uuids assoc (:block/uuid data) (:block/uuid page)) - (assoc data :block/uuid (:block/uuid page))) + (swap! *uuids assoc (:block/uuid data) (:block/uuid block)) + (let [existing-data (assoc (into {} block) :db/id (:db/id block))] + (reduce + (fn [data [k v]] + (update data k + (fn [existing-value] + (if (and (coll? v) (not (map? v))) + (concat v (if (coll? existing-value) existing-value [existing-value])) + (or existing-value v))))) + data + existing-data) + (merge data))) data) :else data) data)))) ;; using existing page's uuid - data' (walk/postwalk + data' (walk/prewalk (fn [f] - (if (and (vector? f) (= :block/uuid (first f)) (@*uuids (second f))) + (cond + (and (de/entity? f) (:block/uuid f)) + (or (:db/ident f) [:block/uuid (:block/uuid f)]) + (and (vector? f) (= :block/uuid (first f)) (@*uuids (second f))) [:block/uuid (@*uuids (second f))] + :else f)) data)] (d/transact! conn data' {:fix-db? true From 8ce12cef262c84a45689627639eafc5d351d0d54 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Thu, 2 Jan 2025 08:40:49 +0800 Subject: [PATCH 5/7] fix: db migrate --- src/main/frontend/worker/db/migrate.cljs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/frontend/worker/db/migrate.cljs b/src/main/frontend/worker/db/migrate.cljs index 1b72625ec5..8cc40667eb 100644 --- a/src/main/frontend/worker/db/migrate.cljs +++ b/src/main/frontend/worker/db/migrate.cljs @@ -603,15 +603,14 @@ (swap! *uuids assoc (:block/uuid data) (:block/uuid block)) (let [existing-data (assoc (into {} block) :db/id (:db/id block))] (reduce - (fn [data [k v]] + (fn [data [k existing-value]] (update data k - (fn [existing-value] + (fn [v] (if (and (coll? v) (not (map? v))) (concat v (if (coll? existing-value) existing-value [existing-value])) - (or existing-value v))))) + (if (some? existing-value) existing-value v))))) data - existing-data) - (merge data))) + existing-data))) data) :else From c6d9f337007199c8ef1789779286a14f57464f1d Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Thu, 2 Jan 2025 08:46:05 +0800 Subject: [PATCH 6/7] fix: react warning --- src/main/frontend/components/block.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/frontend/components/block.cljs b/src/main/frontend/components/block.cljs index 4a9c3f7a00..d14a4ea16e 100644 --- a/src/main/frontend/components/block.cljs +++ b/src/main/frontend/components/block.cljs @@ -4130,7 +4130,7 @@ (when (seq blocks) [:div.blocks-container.flex-1 {:class (when doc-mode? "document-mode") - :container-id (:container-id state)} + :containerid (:container-id state)} (block-list (assoc config :container-id (:container-id state)) blocks)]))) From 6030ae16585d441a6d4745d24c702cd5b6a06f7c Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Thu, 2 Jan 2025 16:56:01 +0800 Subject: [PATCH 7/7] fix: mark hash tag symbol as select-none --- src/main/frontend/components/block.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/frontend/components/block.cljs b/src/main/frontend/components/block.cljs index d14a4ea16e..2d5e90bbdf 100644 --- a/src/main/frontend/components/block.cljs +++ b/src/main/frontend/components/block.cljs @@ -2630,7 +2630,7 @@ (db-property-handler/delete-property-value! (:db/id block) :block/tags (:db/id tag)))} (ui/icon "x" {:size 14 :style {:margin-top 1}})] - [:a.hash-symbol {:style {:margin-left 5}} + [:a.hash-symbol.select-none {:style {:margin-left 5}} "#"]) (page-cp (assoc config :disable-preview? true