yesod-pnotify-1.1.1: Yesod/Goodies/PNotify/Modules/Buttons.hs
module Yesod.Goodies.PNotify.Modules.Buttons
( Buttons(..)
, defaultButtons
)where
import Data.Aeson
import Data.Text (Text)
import Yesod.Goodies.PNotify.Types
import Yesod.Goodies.PNotify.Types.Instances
data Labels = Labels { _close :: Maybe Text
, _stick :: Maybe Text
}
deriving (Read, Show, Eq, Ord)
instance FromJSON Labels where
parseJSON (Object v) = Labels <$>
v .:? "close" <*>
v .:? "stick"
instance ToJSON Labels where
toJSON (Labels { _close
, _stick
})
= object $ maybe [] (\x -> ["close" .= x]) _close ++
maybe [] (\x -> ["stick" .= x]) _stick ++
[]
data Buttons = Buttons { _closer :: Maybe Bool
, _closer_hover :: Maybe Bool
, _sticker :: Maybe Bool
, _sticker_hover :: Maybe Bool
, _show_on_nonblock :: Maybe Bool
, _labels :: Maybe Labels
}
deriving (Read, Show, Eq, Ord)
instance FromJSON Buttons where
parseJSON (Object v) = Buttons <$>
v .:? "closer" <*>
v .:? "closer_hover" <*>
v .:? "sticker" <*>
v .:? "sticker_hover" <*>
v .:? "show_on_nonblock" <*>
v .:? "labels"
instance ToJSON Buttons where
toJSON (Buttons { _closer
, _closer_hover
, _sticker
, _sticker_hover
, _show_on_nonblock
, _labels
})
= object $ maybe [] (\x -> ["closer" .= x]) _closer ++
maybe [] (\x -> ["closer_hover" .= x]) _closer_hover ++
maybe [] (\x -> ["sticker" .= x]) _sticker ++
maybe [] (\x -> ["sticker_hover" .= x]) _sticker_hover ++
maybe [] (\x -> ["show_on_nonblock" .= x]) _show_on_nonblock ++
maybe [] (\x -> ["labels" .= x]) _labels ++
[]
defaultButtons :: Buttons
defaultButtons = Buttons
{ _closer = Nothing
, _closer_hover = Nothing
, _sticker = Nothing
, _sticker_hover = Nothing
, _show_on_nonblock = Nothing
, _labels = Nothing
}