module Web.Hyperbole.Types.Event where
import Data.Aeson (ToJSON)
import Data.String.Conversions (cs)
import Data.Text (Text)
newtype TargetViewId = TargetViewId {TargetViewId -> Text
text :: Text}
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)
instance Show TargetViewId where
show :: TargetViewId -> String
show (TargetViewId Text
t) = String
"TargetViewId " String -> ShowS
forall a. Semigroup a => a -> a -> a
<> Text -> String
forall a b. ConvertibleStrings a b => a -> b
cs Text
t
data Event id act = Event
{ forall id act. Event id act -> id
viewId :: id
, forall id act. Event id act -> act
action :: act
}
instance (Show act, Show id) => Show (Event id act) where
show :: Event id act -> String
show Event id act
e = String
"Event " String -> ShowS
forall a. Semigroup a => a -> a -> a
<> id -> String
forall a. Show a => a -> String
show Event id act
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
e.action