{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE ViewPatterns #-}
module Navi.Services.Battery.Status.Toml
( BatteryStatusToml (..),
)
where
import Navi.Data.NaviNote (Timeout, timeoutOptDecoder)
import Navi.Data.PollInterval (PollInterval (..), pollIntervalOptDecoder)
import Navi.Event.Toml
( ErrorNoteToml,
RepeatEventToml,
errorNoteOptDecoder,
repeatEventOptDecoder,
)
import Navi.Prelude
import Navi.Services.Battery.Common (batteryAppDecoder)
import Pythia.Services.Battery (BatteryApp)
data BatteryStatusToml = MkBatteryStatusToml
{
BatteryStatusToml -> BatteryApp
app :: BatteryApp,
BatteryStatusToml -> Maybe PollInterval
pollInterval :: Maybe PollInterval,
BatteryStatusToml -> Maybe RepeatEventToml
repeatEvent :: Maybe RepeatEventToml,
BatteryStatusToml -> Maybe ErrorNoteToml
errorNote :: Maybe ErrorNoteToml,
BatteryStatusToml -> Maybe Timeout
mTimeout :: Maybe Timeout
}
deriving stock (BatteryStatusToml -> BatteryStatusToml -> Bool
(BatteryStatusToml -> BatteryStatusToml -> Bool)
-> (BatteryStatusToml -> BatteryStatusToml -> Bool)
-> Eq BatteryStatusToml
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: BatteryStatusToml -> BatteryStatusToml -> Bool
== :: BatteryStatusToml -> BatteryStatusToml -> Bool
$c/= :: BatteryStatusToml -> BatteryStatusToml -> Bool
/= :: BatteryStatusToml -> BatteryStatusToml -> Bool
Eq, Int -> BatteryStatusToml -> ShowS
[BatteryStatusToml] -> ShowS
BatteryStatusToml -> String
(Int -> BatteryStatusToml -> ShowS)
-> (BatteryStatusToml -> String)
-> ([BatteryStatusToml] -> ShowS)
-> Show BatteryStatusToml
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BatteryStatusToml -> ShowS
showsPrec :: Int -> BatteryStatusToml -> ShowS
$cshow :: BatteryStatusToml -> String
show :: BatteryStatusToml -> String
$cshowList :: [BatteryStatusToml] -> ShowS
showList :: [BatteryStatusToml] -> ShowS
Show)
makeFieldLabelsNoPrefix ''BatteryStatusToml
instance DecodeTOML BatteryStatusToml where
tomlDecoder :: Decoder BatteryStatusToml
tomlDecoder =
BatteryApp
-> Maybe PollInterval
-> Maybe RepeatEventToml
-> Maybe ErrorNoteToml
-> Maybe Timeout
-> BatteryStatusToml
MkBatteryStatusToml
(BatteryApp
-> Maybe PollInterval
-> Maybe RepeatEventToml
-> Maybe ErrorNoteToml
-> Maybe Timeout
-> BatteryStatusToml)
-> Decoder BatteryApp
-> Decoder
(Maybe PollInterval
-> Maybe RepeatEventToml
-> Maybe ErrorNoteToml
-> Maybe Timeout
-> BatteryStatusToml)
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder BatteryApp -> Text -> Decoder BatteryApp
forall a. Decoder a -> Text -> Decoder a
getFieldWith Decoder BatteryApp
batteryAppDecoder Text
"app"
Decoder
(Maybe PollInterval
-> Maybe RepeatEventToml
-> Maybe ErrorNoteToml
-> Maybe Timeout
-> BatteryStatusToml)
-> Decoder (Maybe PollInterval)
-> Decoder
(Maybe RepeatEventToml
-> Maybe ErrorNoteToml -> Maybe Timeout -> BatteryStatusToml)
forall a b. Decoder (a -> b) -> Decoder a -> Decoder b
forall (f :: Type -> Type) a b.
Applicative f =>
f (a -> b) -> f a -> f b
<*> Decoder (Maybe PollInterval)
pollIntervalOptDecoder
Decoder
(Maybe RepeatEventToml
-> Maybe ErrorNoteToml -> Maybe Timeout -> BatteryStatusToml)
-> Decoder (Maybe RepeatEventToml)
-> Decoder
(Maybe ErrorNoteToml -> Maybe Timeout -> BatteryStatusToml)
forall a b. Decoder (a -> b) -> Decoder a -> Decoder b
forall (f :: Type -> Type) a b.
Applicative f =>
f (a -> b) -> f a -> f b
<*> Decoder (Maybe RepeatEventToml)
repeatEventOptDecoder
Decoder (Maybe ErrorNoteToml -> Maybe Timeout -> BatteryStatusToml)
-> Decoder (Maybe ErrorNoteToml)
-> Decoder (Maybe Timeout -> BatteryStatusToml)
forall a b. Decoder (a -> b) -> Decoder a -> Decoder b
forall (f :: Type -> Type) a b.
Applicative f =>
f (a -> b) -> f a -> f b
<*> Decoder (Maybe ErrorNoteToml)
errorNoteOptDecoder
Decoder (Maybe Timeout -> BatteryStatusToml)
-> Decoder (Maybe Timeout) -> Decoder BatteryStatusToml
forall a b. Decoder (a -> b) -> Decoder a -> Decoder b
forall (f :: Type -> Type) a b.
Applicative f =>
f (a -> b) -> f a -> f b
<*> Decoder (Maybe Timeout)
timeoutOptDecoder