{-# LANGUAGE OverloadedStrings, TemplateHaskell #-}
module Web.Slack.Types.ChannelOpt where

import Data.Aeson
import Control.Lens.TH
import Control.Applicative
import Web.Slack.Types.Event
import Web.Slack.Types.Time


data ChannelOpt = ChannelOpt
                { _channelOptLastRead    :: SlackTimeStamp
                , _channelOptUnreadCount :: Int
                , _channelOptLatest      :: Event
                } deriving (Show)

makeLenses ''ChannelOpt

instance FromJSON ChannelOpt where
  parseJSON = withObject "ChannelOpt"
                (\o -> ChannelOpt
                        <$> o .: "last_read"
                        <*> o .: "unread_count"
                        <*> o .: "latest")