module Web.Hyperbole.Types.Event where
import Data.Aeson (ToJSON)
import Data.String.Conversions (cs)
import Web.Hyperbole.Data.Encoded
newtype TargetViewId = TargetViewId {TargetViewId -> Encoded
encoded :: Encoded}
deriving newtype ([TargetViewId] -> Value
[TargetViewId] -> Encoding
TargetViewId -> Bool
TargetViewId -> Value
TargetViewId -> Encoding
(TargetViewId -> Value)
-> (TargetViewId -> Encoding)
-> ([TargetViewId] -> Value)
-> ([TargetViewId] -> Encoding)
-> (TargetViewId -> Bool)
-> ToJSON TargetViewId
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: TargetViewId -> Value
toJSON :: TargetViewId -> Value
$ctoEncoding :: TargetViewId -> Encoding
toEncoding :: TargetViewId -> Encoding
$ctoJSONList :: [TargetViewId] -> Value
toJSONList :: [TargetViewId] -> Value
$ctoEncodingList :: [TargetViewId] -> Encoding
toEncodingList :: [TargetViewId] -> Encoding
$comitField :: TargetViewId -> Bool
omitField :: TargetViewId -> Bool
ToJSON, Eq TargetViewId
Eq TargetViewId =>
(TargetViewId -> TargetViewId -> Ordering)
-> (TargetViewId -> TargetViewId -> Bool)
-> (TargetViewId -> TargetViewId -> Bool)
-> (TargetViewId -> TargetViewId -> Bool)
-> (TargetViewId -> TargetViewId -> Bool)
-> (TargetViewId -> TargetViewId -> TargetViewId)
-> (TargetViewId -> TargetViewId -> TargetViewId)
-> Ord TargetViewId
TargetViewId -> TargetViewId -> Bool
TargetViewId -> TargetViewId -> Ordering
TargetViewId -> TargetViewId -> TargetViewId
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: TargetViewId -> TargetViewId -> Ordering
compare :: TargetViewId -> TargetViewId -> Ordering
$c< :: TargetViewId -> TargetViewId -> Bool
< :: TargetViewId -> TargetViewId -> Bool
$c<= :: TargetViewId -> TargetViewId -> Bool
<= :: TargetViewId -> TargetViewId -> Bool
$c> :: TargetViewId -> TargetViewId -> Bool
> :: TargetViewId -> TargetViewId -> Bool
$c>= :: TargetViewId -> TargetViewId -> Bool
>= :: TargetViewId -> TargetViewId -> Bool
$cmax :: TargetViewId -> TargetViewId -> TargetViewId
max :: TargetViewId -> TargetViewId -> TargetViewId
$cmin :: TargetViewId -> TargetViewId -> TargetViewId
min :: TargetViewId -> TargetViewId -> TargetViewId
Ord, TargetViewId -> TargetViewId -> Bool
(TargetViewId -> TargetViewId -> Bool)
-> (TargetViewId -> TargetViewId -> Bool) -> Eq TargetViewId
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TargetViewId -> TargetViewId -> Bool
== :: TargetViewId -> TargetViewId -> Bool
$c/= :: TargetViewId -> TargetViewId -> Bool
/= :: TargetViewId -> TargetViewId -> Bool
Eq)
instance Show TargetViewId where
show :: TargetViewId -> String
show (TargetViewId Encoded
e) = String
"TargetViewId " String -> ShowS
forall a. Semigroup a => a -> a -> a
<> Text -> String
forall a b. ConvertibleStrings a b => a -> b
cs (Encoded -> Text
encodedToText Encoded
e)
data Event id act st = Event
{ forall id act st. Event id act st -> id
viewId :: id
, forall id act st. Event id act st -> act
action :: act
, forall id act st. Event id act st -> st
state :: st
}
instance (Show act, Show id, Show st) => Show (Event id act st) where
show :: Event id act st -> String
show Event id act st
e = String
"Event " String -> ShowS
forall a. Semigroup a => a -> a -> a
<> id -> String
forall a. Show a => a -> String
show Event id act st
e.viewId String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
" " String -> ShowS
forall a. Semigroup a => a -> a -> a
<> act -> String
forall a. Show a => a -> String
show Event id act st
e.action String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
" " String -> ShowS
forall a. Semigroup a => a -> a -> a
<> st -> String
forall a. Show a => a -> String
show Event id act st
e.state