0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-02-13 02:28:18 -05:00

🐛 Fix problem with throttle function

This commit is contained in:
alonso.torres 2024-03-13 17:53:30 +01:00 committed by Andrey Antukh
parent 7436918edb
commit 75d0648065
2 changed files with 16 additions and 14 deletions

View file

@ -25,7 +25,7 @@
[app.util.globals :as globals] [app.util.globals :as globals]
[app.util.i18n :as i18n :refer [tr]] [app.util.i18n :as i18n :refer [tr]]
[app.util.keyboard :as kbd] [app.util.keyboard :as kbd]
[app.util.timers :as ts] [app.util.rxops :refer [throttle-fn]]
[beicon.v2.core :as rx] [beicon.v2.core :as rx]
[cuerdas.core :as str] [cuerdas.core :as str]
[goog.events :as events] [goog.events :as events]
@ -38,22 +38,24 @@
(mf/defc frame-wrapper (mf/defc frame-wrapper
{::mf/props :obj} {::mf/props :obj}
[{:keys [selected] :as props}] [{:keys [selected] :as props}]
(let [disposable (mf/use-var nil) (let [pending-selected (mf/use-var selected)
pending-selected (mf/use-var selected)
current-selected (mf/use-state selected) current-selected (mf/use-state selected)
props (mf/spread props :selected @current-selected)] props (mf/spread props :selected @current-selected)
(mf/with-effect [selected] set-selected
(mf/use-memo
(fn []
(throttle-fn
50
#(when-let [pending-selected @pending-selected]
(reset! current-selected pending-selected)))))]
(mf/with-effect [selected set-selected]
(reset! pending-selected selected) (reset! pending-selected selected)
(swap! disposable (fn [value] (set-selected)
(when (some? value)
(rx/dispose! value))
(ts/idle-then-raf
(fn []
(reset! current-selected @pending-selected)
(reset! disposable nil)))))
(fn [] (fn []
(some-> @disposable rx/dispose!))) (reset! pending-selected nil)
#(rx/dispose! set-selected)))
[:> layer-item props])) [:> layer-item props]))

View file

@ -44,7 +44,7 @@
(when-not ^boolean timeout-id (when-not ^boolean timeout-id
(set! (.-timeoutId state) (set! (.-timeoutId state)
(js/setTimeout execute-fn (- delay ctime ltime))))))))] (js/setTimeout execute-fn (- delay (- ctime ltime)))))))))]
(specify! wrapped-fn (specify! wrapped-fn
rx/IDisposable rx/IDisposable