diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index 43937ac45..d6d71d994 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -405,7 +405,7 @@ (filter #(= (:type %) :add-obj)) (map :obj))] (doseq [shape added] - (api/set-object [] shape)))) + (api/process-object shape)))) (if (and save-undo? (seq undo-changes)) (let [entry {:undo-changes undo-changes diff --git a/frontend/src/app/render_wasm/api.cljs b/frontend/src/app/render_wasm/api.cljs index c5a6f2769..02e337e8e 100644 --- a/frontend/src/app/render_wasm/api.cljs +++ b/frontend/src/app/render_wasm/api.cljs @@ -756,6 +756,17 @@ (set-shape-fills fills) (set-shape-strokes strokes))))) +(defn process-object + [shape] + (let [pending (set-object [] shape)] + (when-let [pending (seq pending)] + (->> (rx/from pending) + (rx/mapcat identity) + (rx/reduce conj []) + (rx/subs! (fn [_] + (clear-drawing-cache) + (request-render "set-objects"))))))) + (defn set-objects [objects] (let [shapes (into [] (vals objects))