diff --git a/deps/db/src/logseq/db.cljs b/deps/db/src/logseq/db.cljs index 4d277e46e..376f5fa00 100644 --- a/deps/db/src/logseq/db.cljs +++ b/deps/db/src/logseq/db.cljs @@ -88,8 +88,8 @@ (defn- get-block-and-children-aux [entity] - (if-let [children (:block/_parent entity)] - (cons (dissoc entity :block/_parent) (mapcat get-block-and-children-aux children)) + (if-let [children (sort-by-order (:block/_parent entity))] + (cons entity (mapcat get-block-and-children-aux children)) [entity])) (defn get-block-and-children diff --git a/deps/outliner/src/logseq/outliner/tree.cljs b/deps/outliner/src/logseq/outliner/tree.cljs index 61678b67a..c5eca5555 100644 --- a/deps/outliner/src/logseq/outliner/tree.cljs +++ b/deps/outliner/src/logseq/outliner/tree.cljs @@ -46,6 +46,7 @@ :else [false root-id])) +;; TODO: entity can already be used as a tree (defn blocks->vec-tree "`blocks` need to be in the same page." [repo db blocks root-id] @@ -107,27 +108,8 @@ parent->children (group-by :block/parent blocks)] (map #(tree parent->children % (or default-level 1)) top-level-blocks')))) -(defn- sort-blocks-aux - [parents parent-groups] - (mapv (fn [parent] - (let [parent-id {:db/id (:db/id parent)} - children (ldb/sort-by-order (get @parent-groups parent-id)) - _ (swap! parent-groups #(dissoc % parent-id)) - sorted-nested-children (when (not-empty children) (sort-blocks-aux children parent-groups))] - (if sorted-nested-children [parent sorted-nested-children] [parent]))) - parents)) - -;; Do we still need this? -(defn ^:api sort-blocks - "sort blocks by parent & order" - [blocks-exclude-root root] - (let [parent-groups (atom (group-by :block/parent blocks-exclude-root))] - (flatten (concat (sort-blocks-aux [root] parent-groups) (vals @parent-groups))))) - (defn get-sorted-block-and-children [db db-id] (when db-id (when-let [root-block (d/entity db db-id)] - (let [blocks (ldb/get-block-and-children db (:block/uuid root-block)) - blocks-exclude-root (remove (fn [b] (= (:db/id b) db-id)) blocks)] - (sort-blocks blocks-exclude-root root-block))))) + (ldb/get-block-and-children db (:block/uuid root-block))))) diff --git a/src/main/frontend/handler/editor.cljs b/src/main/frontend/handler/editor.cljs index 14b4f9fbf..182fbba8d 100644 --- a/src/main/frontend/handler/editor.cljs +++ b/src/main/frontend/handler/editor.cljs @@ -2149,22 +2149,19 @@ (db-async/ (first sorted-blocks) + (-> (first blocks) (update :block/properties-text-values dissoc :template) (update :block/properties-order (fn [keys] (vec (remove #{:template} keys))))) - (rest sorted-blocks)) + (rest blocks)) blocks (if template-including-parent? sorted-blocks (drop 1 sorted-blocks))] diff --git a/src/main/frontend/modules/outliner/tree.cljs b/src/main/frontend/modules/outliner/tree.cljs index f9e7ff18a..6327d7723 100644 --- a/src/main/frontend/modules/outliner/tree.cljs +++ b/src/main/frontend/modules/outliner/tree.cljs @@ -16,7 +16,6 @@ (def filter-top-level-blocks otree/filter-top-level-blocks) (def non-consecutive-blocks->vec-tree otree/non-consecutive-blocks->vec-tree) -(def sort-blocks otree/sort-blocks) (defn get-sorted-block-and-children [repo db-id]