feat: keep indent after copy block refs

Fixes #3349
This commit is contained in:
ahonn
2021-12-07 23:04:54 +08:00
committed by Tienson Qin
parent 9029c632ef
commit 1ca2b3fc21

View File

@@ -1186,16 +1186,35 @@
(defn copy-block-refs
[]
(when-let [blocks (seq (get-selected-blocks-with-children))]
(let [ids (->> (distinct (map #(when-let [id (dom/attr % "blockid")]
(uuid id)) blocks))
(remove nil?))
ids-str (some->> ids
(map (fn [id] (util/format "((%s))" id)))
(string/join "\n\n"))]
(doseq [id ids]
(set-block-id! id))
(util/copy-to-clipboard! ids-str))))
(when-let [selected-blocks (seq (get-selected-blocks-with-children))]
(let [blocks (->> (distinct (map #(when-let [id (dom/attr % "blockid")]
(let [level (dom/attr % "level")]
{:id (uuid id)
:level (int level)}))
selected-blocks))
(remove nil?))
first-block (first blocks)
first-root-level-index (ffirst
(filter (fn [[_ block]] (= (:level block) 1))
(map-indexed vector blocks)))
adjusted-blocks (map-indexed (fn [index {:keys [id level]}]
{:id id
:level (if (and (< index first-root-level-index))
(inc (- level (:level first-block)))
level)})
blocks)
block (db/pull [:block/uuid (:id first-block)])
copy-str (some->> adjusted-blocks
(map (fn [{:keys [id level]}]
(condp = (:block/format block)
:org
(util/format (str (string/join (repeat level "*")) " ((%s))") id)
:markdown
(util/format (str (string/join (repeat (dec level) "\t")) "- ((%s))") id))))
(string/join "\n\n"))]
(doseq [block blocks]
(set-block-id! (:id block)))
(util/copy-to-clipboard! copy-str))))
(defn copy-block-embeds
[]