yesod-pnotify-1.1.1: Yesod/Goodies/PNotify/Modules/History.hs
module Yesod.Goodies.PNotify.Modules.History
( History(..)
, defaultHistory
)where
import Data.Aeson
import Data.Text (Text)
import Yesod.Goodies.PNotify.Types
import Yesod.Goodies.PNotify.Types.Instances
data Labels = Labels { _redisplay :: Maybe Text
, _all :: Maybe Text
, _last :: Maybe Text
}
deriving (Read, Show, Eq, Ord)
instance FromJSON Labels where
parseJSON (Object v) = Labels <$>
v .:? "redisplay" <*>
v .:? "all" <*>
v .:? "last"
instance ToJSON Labels where
toJSON (Labels { _redisplay
, _all
, _last
})
= object $ maybe [] (\x -> ["redisplay" .= x]) _redisplay ++
maybe [] (\x -> ["all" .= x]) _all ++
maybe [] (\x -> ["last" .= x]) _last ++
[]
data History = History { _history :: Maybe Bool
, _menu :: Maybe Bool
, _fixed :: Maybe Bool
, _maxonscreen :: Maybe Int
, _labels :: Maybe Labels
}
deriving (Read, Show, Eq, Ord)
instance FromJSON History where
parseJSON (Object v) = History <$>
v .:? "history" <*>
v .:? "menu" <*>
v .:? "fixed" <*>
v .:? "maxonscreen" <*>
v .:? "labels"
instance ToJSON History where
toJSON (History { _history
, _menu
, _fixed
, _maxonscreen
, _labels
})
= object $ maybe [] (\x -> ["history" .= x]) _history ++
maybe [] (\x -> ["menu" .= x]) _menu ++
maybe [] (\x -> ["fixed" .= x]) _fixed ++
maybe [] (\x -> ["maxonscreen" .= x]) _maxonscreen ++
maybe [] (\x -> ["labels" .= x]) _labels ++
[]
defaultHistory :: History
defaultHistory = History
{ _history = Nothing
, _menu = Nothing
, _fixed = Nothing
, _maxonscreen = Nothing
, _labels = Nothing
}