|
|
@@ -348,21 +348,23 @@
|
|
|
(sort-by-left blocks parent {:check? true}))
|
|
|
([blocks parent {:keys [check?]}]
|
|
|
(let [blocks (util/distinct-by :db/id blocks)]
|
|
|
- (when check?
|
|
|
- (when (not= (count blocks) (count (set (map :block/left blocks))))
|
|
|
- (let [duplicates (->> (map (comp :db/id :block/left) blocks)
|
|
|
- frequencies
|
|
|
- (filter (fn [[_k v]] (> v 1)))
|
|
|
- (map (fn [[k _v]]
|
|
|
- (let [left (db-utils/pull k)]
|
|
|
- {:left left
|
|
|
- :duplicates (->>
|
|
|
- (filter (fn [block]
|
|
|
- (= k (:db/id (:block/left block))))
|
|
|
- blocks)
|
|
|
- (map #(select-keys % [:db/id :block/level :block/content :block/file])))}))))]
|
|
|
- (util/pprint duplicates)))
|
|
|
- (assert (= (count blocks) (count (set (map :block/left blocks)))) "Each block should have a different left node"))
|
|
|
+ (when (and check?
|
|
|
+ ;; Top-level blocks on whiteboards have no relationships of :block/left
|
|
|
+ (not= "whiteboard" (:block/type (db-utils/entity (:db/id parent)))))
|
|
|
+ (when (not= (count blocks) (count (set (map :block/left blocks))))
|
|
|
+ (let [duplicates (->> (map (comp :db/id :block/left) blocks)
|
|
|
+ frequencies
|
|
|
+ (filter (fn [[_k v]] (> v 1)))
|
|
|
+ (map (fn [[k _v]]
|
|
|
+ (let [left (db-utils/pull k)]
|
|
|
+ {:left left
|
|
|
+ :duplicates (->>
|
|
|
+ (filter (fn [block]
|
|
|
+ (= k (:db/id (:block/left block))))
|
|
|
+ blocks)
|
|
|
+ (map #(select-keys % [:db/id :block/level :block/content :block/file])))}))))]
|
|
|
+ (util/pprint duplicates)))
|
|
|
+ (assert (= (count blocks) (count (set (map :block/left blocks)))) "Each block should have a different left node"))
|
|
|
|
|
|
(let [left->blocks (reduce (fn [acc b] (assoc acc (:db/id (:block/left b)) b)) {} blocks)]
|
|
|
(loop [block parent
|