Skip to content

Commit c968749

Browse files
committed
enhance validation performance
1 parent 9b5cf1a commit c968749

File tree

3 files changed

+6
-24
lines changed

3 files changed

+6
-24
lines changed

src/renderer/core.cljs

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
[re-pressed.core :as rp]
1212
[reagent.dom :as ra.dom]
1313
[renderer.attribute.core]
14-
[renderer.db]
1514
[renderer.dialog.events]
1615
[renderer.dialog.subs]
1716
[renderer.document.events :as document.e]

src/renderer/events.cljs

+5-22
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
(ns renderer.events
22
(:require
3-
[clojure.data :as data]
43
[malli.core :as ma]
54
[malli.error :as ma.error]
65
[re-frame.core :as rf]
@@ -13,34 +12,18 @@
1312
[renderer.utils.local-storage :as local-storage]
1413
[renderer.utils.pointer :as pointer]))
1514

16-
(def last-state (atom nil))
15+
(def valid? (ma/validator db/app))
1716

1817
(defn check-and-throw
1918
"Throws an exception if `db` doesn't match the Spec"
20-
[event schema state]
21-
(when-not (ma/validate schema state)
19+
[state event]
20+
(when-not (valid? state)
2221
(js/console.error (str "Event: " (first event)))
23-
(throw (js/Error. (str "Spec check failed: " (-> (ma/explain schema state)
22+
(throw (js/Error. (str "Spec check failed: " (-> (ma/explain db/app state)
2423
ma.error/humanize
2524
str))))))
2625

27-
(defn check-schema [schema state event]
28-
(if @last-state
29-
(let [[prev current _] (data/diff @last-state state)
30-
changed-keys (set (concat (keys prev) (keys current)))]
31-
(reset! last-state state)
32-
(when (seq changed-keys)
33-
(let [schema* (->> schema
34-
rest
35-
(filter (fn [[schema-key & _]] (changed-keys schema-key)))
36-
(cons :map)
37-
vec)]
38-
(check-and-throw event schema* state))))
39-
(do
40-
(reset! last-state state)
41-
(check-and-throw event schema state))))
42-
43-
(def schema-valdator (rf/after (partial check-schema db/app)))
26+
(def schema-valdator (rf/after (partial check-and-throw)))
4427

4528
(rf/reg-global-interceptor schema-valdator)
4629

src/renderer/reepl/replumb.cljs

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
#_(fn [& a] nil)
3737
fetch-file!)
3838
{:warning-as-error true
39-
:verbose config/debug?
39+
:verbose false ; config/debug?
4040
;; :load-fn! (fn [z cb])
4141
:no-pr-str-on-value true}))
4242
cljs.js/*load-fn*

0 commit comments

Comments
 (0)