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 }