yesod-pnotify-1.1.1: Yesod/Goodies/PNotify/Modules/Desktop.hs
module Yesod.Goodies.PNotify.Modules.Desktop
( Desktop(..)
, defaultDesktop
)where
import Data.Aeson
import Data.Text (Text)
import Yesod.Goodies.PNotify.Types
import Yesod.Goodies.PNotify.Types.Instances
data Desktop = Desktop { _desktop :: Maybe Bool
, _fallback :: Maybe Bool
, _icon :: Maybe (Prelude.Either Bool URL)
, _tag :: Maybe Text
}
deriving (Read, Show, Eq, Ord)
instance FromJSON Desktop where
parseJSON (Object v) = Desktop <$>
v .:? "desktop" <*>
v .:? "fallback" <*>
v .:? "icon" <*>
v .:? "tag"
instance ToJSON Desktop where
toJSON (Desktop { _desktop
, _fallback
, _icon
, _tag
})
= object $ maybe [] (\x -> ["desktop" .= x]) _desktop ++
maybe [] (\x -> ["fallback" .= x]) _fallback ++
maybe [] (\x -> ["icon" .= x]) _icon ++
maybe [] (\x -> ["tag" .= x]) _tag ++
[]
defaultDesktop :: Desktop
defaultDesktop = Desktop
{ _desktop = Nothing
, _fallback = Nothing
, _icon = Nothing
, _tag = Nothing
}