🐛 Fix problems with cache and thumbnails

This commit is contained in:
alonso.torres 2022-12-05 13:21:06 +01:00
parent 6c2d2e142b
commit 7dbe39b1b5
4 changed files with 39 additions and 21 deletions

View file

@ -13,6 +13,7 @@
[app.common.geom.shapes.transforms :as gtr] [app.common.geom.shapes.transforms :as gtr]
[app.common.math :as mth] [app.common.math :as mth]
[app.common.types.modifiers :as ctm] [app.common.types.modifiers :as ctm]
[app.common.types.shape.layout :as ctl]
[app.common.uuid :as uuid])) [app.common.uuid :as uuid]))
;; Auxiliary methods to work in an specifica axis ;; Auxiliary methods to work in an specifica axis
@ -285,13 +286,25 @@
(let [modifiers (ctm/select-child modifiers) (let [modifiers (ctm/select-child modifiers)
constraints-h constraints-h
(if-not ignore-constraints (cond
(ctl/layout? parent)
:left
(not ignore-constraints)
(:constraints-h child (default-constraints-h child)) (:constraints-h child (default-constraints-h child))
:else
:scale) :scale)
constraints-v constraints-v
(if-not ignore-constraints (cond
(ctl/layout? parent)
:top
(not ignore-constraints)
(:constraints-v child (default-constraints-v child)) (:constraints-v child (default-constraints-v child))
:else
:scale)] :scale)]
(if (and (= :scale constraints-h) (= :scale constraints-v)) (if (and (= :scale constraints-h) (= :scale constraints-v))

View file

@ -283,13 +283,13 @@
(fn [old new attr] (fn [old new attr]
(let [old-val (get old attr) (let [old-val (get old attr)
new-val (get new attr)] new-val (get new attr)]
(not= old-val new-val)))] (not= old-val new-val)))
(let [new-obj (update-fn object)] new-obj (update-fn object)]
(if (= object new-obj) (if (= object new-obj)
'() '()
(let [attrs (or attrs (d/concat-set (keys object) (keys new-obj)))] (let [attrs (or attrs (d/concat-set (keys object) (keys new-obj)))]
(filter (partial changed? object new-obj) attrs)))))) (filter (partial changed? object new-obj) attrs)))))
(defn update-shapes (defn update-shapes
"Calculate the changes and undos to be done when a function is applied to a "Calculate the changes and undos to be done when a function is applied to a

View file

@ -55,8 +55,8 @@
[app.main.data.workspace.path.shapes-to-path :as dwps] [app.main.data.workspace.path.shapes-to-path :as dwps]
[app.main.data.workspace.persistence :as dwp] [app.main.data.workspace.persistence :as dwp]
[app.main.data.workspace.selection :as dws] [app.main.data.workspace.selection :as dws]
[app.main.data.workspace.shapes :as dwsh]
[app.main.data.workspace.shape-layout :as dwsl] [app.main.data.workspace.shape-layout :as dwsl]
[app.main.data.workspace.shapes :as dwsh]
[app.main.data.workspace.state-helpers :as wsh] [app.main.data.workspace.state-helpers :as wsh]
[app.main.data.workspace.thumbnails :as dwth] [app.main.data.workspace.thumbnails :as dwth]
[app.main.data.workspace.transforms :as dwt] [app.main.data.workspace.transforms :as dwt]

View file

@ -29,15 +29,20 @@
:else :else
(let [subject (rx/subject)] (let [subject (rx/subject)]
(do
(swap! pending assoc key subject) (swap! pending assoc key subject)
(->> observable
(rx/catch #(do (rx/error! subject %) (rx/subscribe
(swap! pending dissoc key) observable
(rx/throw %)))
(rx/tap
(fn [data] (fn [data]
(let [entry {:created-at (dt/now) :data data}] (let [entry {:created-at (dt/now) :data data}]
(swap! cache assoc key entry)) (swap! cache assoc key entry))
(swap! pending dissoc key)
(rx/push! subject data) (rx/push! subject data)
(rx/end! subject) (rx/end! subject))
(swap! pending dissoc key))))))))
#(do
(swap! pending dissoc key)
(rx/error! subject %))))
subject))))