blob: e2a3dcbcc0c222132e6ca0515f74791bf0a7837e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
module Util.Validation
( fireValidation
, fireMaybe
, nelError
) where
import Control.Monad (join)
import Data.List.NonEmpty (NonEmpty)
import qualified Data.List.NonEmpty as NEL
import Data.Text (Text)
import Data.Validation (Validation (Failure, Success))
import qualified Data.Validation as Validation
import Reflex.Dom (Dynamic, Event, Reflex)
import qualified Reflex.Dom as R
nelError :: Validation a b -> Validation (NonEmpty a) b
nelError = Validation.validation (Failure . NEL.fromList . (:[])) Success
fireValidation
:: forall t a b c. Reflex t
=> Dynamic t (Maybe (Validation a b))
-> Event t c
-> Event t b
fireValidation value validate =
R.fmapMaybe
(join . fmap (Validation.validation (const Nothing) Just))
(R.tag (R.current value) validate)
fireMaybe
:: forall t a b. Reflex t
=> Dynamic t (Maybe a)
-> Event t b
-> Event t a
fireMaybe value validate =
R.fmapMaybe
id
(R.tag (R.current value) validate)
|