From 682aed49cdf6c612e15da0a445369c5fcbf4c4d2 Mon Sep 17 00:00:00 2001 From: Mike Thompson Date: Mon, 30 Oct 2017 22:19:52 +1100 Subject: [PATCH] fixes #425 --- CHANGES.md | 3 ++- src/re_frame/core.cljc | 4 ++++ src/re_frame/router.cljc | 7 +++++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index f9ce1e2..933e50f 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,7 +1,8 @@ ## Unreleased -#### New Features +#### New + - add `purge-event-queue` to the API. See https://github.com/Day8/re-frame-test/issues/13 for motivation. - added [a new FAQ entry](/docs/FAQs/DoINeedReFrame.md) Reagent looks terrific. Why do I need re-frame? ## 0.10.2 (2017.10.07) diff --git a/src/re_frame/core.cljc b/src/re_frame/core.cljc index 3e1b881..09b3df2 100644 --- a/src/re_frame/core.cljc +++ b/src/re_frame/core.cljc @@ -191,6 +191,10 @@ (reset! db/app-db app-db) nil))) +(defn purge-event-queue + "Remove all events queued for processing" + [] + (router/purge re-frame.router/event-queue)) ;; -- Event Processing Callbacks --------------------------------------------- diff --git a/src/re_frame/router.cljc b/src/re_frame/router.cljc index 4af3b5c..a59b145 100644 --- a/src/re_frame/router.cljc +++ b/src/re_frame/router.cljc @@ -74,6 +74,7 @@ (push [this event]) (add-post-event-callback [this id callack]) (remove-post-event-callback [this f]) + (purge [this]) ;; -- Implementation via a Finite State Machine (-fsm-trigger [this trigger arg]) @@ -113,6 +114,8 @@ (->> (dissoc post-event-callback-fns id) (set! post-event-callback-fns)))) + (purge [_] + (set! queue empty-queue)) ;; -- FSM Implementation --------------------------------------------------- @@ -195,8 +198,8 @@ (recur (dec n))))))) (-exception - [_ ex] - (set! queue empty-queue) ;; purge the queue + [this ex] + (purge this) ;; purge the queue (throw ex)) (-pause