module Yesod.Goodies.PNotify.Modules.Nonblock
       ( Nonblock(..)
       , defaultNonblock
       )where

import Data.Aeson
import Data.Text (Text)

import Yesod.Goodies.PNotify.Types
import Yesod.Goodies.PNotify.Types.Instances

data Nonblock = Nonblock { _nonblock          :: Maybe Bool
                         , _nonblock_opacity  :: Maybe Double
                         }
                deriving (Read, Show, Eq, Ord)

instance FromJSON Nonblock where
  parseJSON (Object v) = Nonblock <$>
                         v .:? "nonblock" <*>
                         v .:? "nonblock_opacity"

instance ToJSON Nonblock where
  toJSON (Nonblock { _nonblock
                   , _nonblock_opacity
                   })
      = object $ maybe [] (\x -> ["nonblock" .= x]) _nonblock ++
                 maybe [] (\x -> ["nonblock_opacity" .= x]) _nonblock_opacity ++
                 []

defaultNonblock :: Nonblock
defaultNonblock = Nonblock
                  { _nonblock         = Nothing
                  , _nonblock_opacity = Nothing
                  }