File tree 2 files changed +34
-4
lines changed 2 files changed +34
-4
lines changed Original file line number Diff line number Diff line change 12
12
[re-frame.registrar :as registrar]
13
13
[re-frame.interceptor :as interceptor]
14
14
[re-frame.std-interceptors :as std-interceptors :refer [db-handler->interceptor
15
- fx-handler->interceptor
16
- ctx-handler->interceptor]]
15
+ fx-handler->interceptor
16
+ ctx-handler->interceptor]]
17
17
[re-frame.utils :as utils]
18
18
[clojure.set :as set]))
19
19
674
674
[f]
675
675
(std-interceptors/enrich f))
676
676
677
+ (def ^{:api-docs/heading " Interceptors" } unpack
678
+ " An interceptor which provides the second element of the event vector to the
679
+ event handler as the event, intended to be used with the second element as a
680
+ map.
681
+
682
+ Your event handlers will look like this:
683
+
684
+ (reg-event-fx
685
+ :event-id
686
+ [... unpack ...] ;; <-- added to the interceptors
687
+ (fn [{:keys [db]} {:keys [x y z]}] ;; <-- instead of [_ {:keys [x y z]}]
688
+ ...)
689
+ "
690
+ std-interceptors /unpack )
691
+
677
692
(def ^{:api-docs/heading " Interceptors" } trim-v
678
693
" An interceptor which removes the first element of the event vector,
679
694
before it is supplied to the event handler, allowing you to write more
Original file line number Diff line number Diff line change 36
36
(console :log " No app-db changes resulted from:" event))))
37
37
context))))
38
38
39
+ (def unpack
40
+ (->interceptor
41
+ :id :unpack
42
+ :before (fn unpack-before
43
+ [context]
44
+ (let [[event-id payload :as event] (get-coeffect context :event )]
45
+ (-> context
46
+ (assoc-coeffect :event (with-meta payload {:event-id event-id}))
47
+ (assoc-coeffect ::packed-event event))))
48
+ :after (fn unpack-after
49
+ [context]
50
+ (-> context
51
+ (utils/dissoc-in [:coeffects ::packed-event ])
52
+ (assoc-coeffect :event (get-coeffect context ::packed-event ))))))
53
+
39
54
40
55
(def trim-v
41
56
(->interceptor
42
57
:id :trim-v
43
- :before (fn trimv -before
58
+ :before (fn trim-v -before
44
59
[context]
45
60
(-> context
46
61
(update-coeffect :event subvec 1 )
47
62
(assoc-coeffect ::untrimmed-event (get-coeffect context :event ))))
48
- :after (fn trimv -after
63
+ :after (fn trim-v -after
49
64
[context]
50
65
(-> context
51
66
(utils/dissoc-in [:coeffects ::untrimmed-event ])
You can’t perform that action at this time.
0 commit comments