aboutsummaryrefslogtreecommitdiff
path: root/client/src/Util/WaitFor.hs
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/Util/WaitFor.hs')
-rw-r--r--client/src/Util/WaitFor.hs17
1 files changed, 17 insertions, 0 deletions
diff --git a/client/src/Util/WaitFor.hs b/client/src/Util/WaitFor.hs
new file mode 100644
index 0000000..fe7b733
--- /dev/null
+++ b/client/src/Util/WaitFor.hs
@@ -0,0 +1,17 @@
+module Util.WaitFor
+ ( waitFor
+ ) where
+
+import Data.Time (NominalDiffTime)
+import Reflex.Dom (Dynamic, Event, MonadWidget)
+import qualified Reflex.Dom as R
+
+waitFor
+ :: forall t m a b. MonadWidget t m
+ => (Event t a -> m (Event t b))
+ -> Event t a
+ -> m (Event t b, Event t Bool)
+waitFor op input = do
+ result <- op input >>= R.debounce (0.5 :: NominalDiffTime)
+ let waiting = R.leftmost [ True <$ input , False <$ result ]
+ return (result, waiting)