navi
Safe HaskellNone
LanguageGHC2021

Navi.Event.Types

Description

This module provides types for defining notification events.

Synopsis

Documentation

data Event result trigger Source #

Event represents sending notifications. An event will:

  1. Query for information (i.e. run a shell command).
  2. Parse the result.
  3. Map the result to a trigger.
  4. Raise an alert if the trigger matches some condition.

For most services, the (result -> trigger) map will be trivial i.e. result and trigger will be identical.

For example, custom servicess is Text, and NetInterfaces is NetInterface. In these cases, there is an exact correspondonce between the service query result and the trigger.

But for e.g. battery percentage, the result is Battery (percentage and status) whereas trigger is PercentageData.

See NOTE: [Battery Percentage Result/Trigger] for an explanation on why this might be desirable.

Constructors

MkEvent 

Fields

Instances

Instances details
(k ~ A_Lens, a ~ ErrorNote, b ~ ErrorNote) => LabelOptic "errorNote" k (Event result trigger) (Event result trigger) a b Source # 
Instance details

Defined in Navi.Event.Types

Methods

labelOptic :: Optic k NoIx (Event result trigger) (Event result trigger) a b Source #

(k ~ A_Lens, a ~ Text, b ~ Text) => LabelOptic "name" k (Event result trigger) (Event result trigger) a b Source # 
Instance details

Defined in Navi.Event.Types

Methods

labelOptic :: Optic k NoIx (Event result trigger) (Event result trigger) a b Source #

(k ~ A_Lens, a ~ PollInterval, b ~ PollInterval) => LabelOptic "pollInterval" k (Event result trigger) (Event result trigger) a b Source # 
Instance details

Defined in Navi.Event.Types

Methods

labelOptic :: Optic k NoIx (Event result trigger) (Event result trigger) a b Source #

(k ~ A_Lens, a ~ (result -> Maybe (trigger, NaviNote)), b ~ (result -> Maybe (trigger, NaviNote))) => LabelOptic "raiseAlert" k (Event result trigger) (Event result trigger) a b Source # 
Instance details

Defined in Navi.Event.Types

Methods

labelOptic :: Optic k NoIx (Event result trigger) (Event result trigger) a b Source #

(k ~ A_Lens, a ~ RepeatEvent trigger, b ~ RepeatEvent trigger) => LabelOptic "repeatEvent" k (Event result trigger) (Event result trigger) a b Source # 
Instance details

Defined in Navi.Event.Types

Methods

labelOptic :: Optic k NoIx (Event result trigger) (Event result trigger) a b Source #

(k ~ A_Lens, a ~ ServiceType result, b ~ ServiceType result) => LabelOptic "serviceType" k (Event result trigger) (Event result trigger) a b Source # 
Instance details

Defined in Navi.Event.Types

Methods

labelOptic :: Optic k NoIx (Event result trigger) (Event result trigger) a b Source #

Show trigger => Show (Event result trigger) Source # 
Instance details

Defined in Navi.Event.Types

Methods

showsPrec :: Int -> Event result trigger -> ShowS #

show :: Event result trigger -> String #

showList :: [Event result trigger] -> ShowS #

data AnyEvent where Source #

Existentially quantifies result type on an Event. Used so that we can store different events in the same list.

Constructors

MkAnyEvent :: forall trigger result. (Ord trigger, Show result, Show trigger) => Event result trigger -> AnyEvent 

Instances

Instances details
Show AnyEvent Source # 
Instance details

Defined in Navi.Event.Types

data RepeatEvent a Source #

Determines if we are allowed to send off duplicate notifications simultaneously. If we are not, then NoRepeats holds the last trigger so that we can detect duplicates.

Constructors

NoRepeats (IORef (Maybe a)) 
SomeRepeats (Set a) (IORef (Maybe a)) 
AllowRepeats 

Instances

Instances details
Show a => Show (RepeatEvent a) Source # 
Instance details

Defined in Navi.Event.Types

data ErrorNote Source #

Determines if we should send notifications for errors and, if so, if we allow repeats.

Constructors

NoErrNote 
AllowErrNote (RepeatEvent ()) 

Instances

Instances details
Show ErrorNote Source # 
Instance details

Defined in Navi.Event.Types

data EventError Source #

Represents an error when querying an Event.

Constructors

MkEventError 

Fields

data EventSuccess result trigger Source #

Holds the Event data used after an event is successfully run.

Since: 0.1

Constructors

MkEventSuccess 

Fields

Instances

Instances details
(k ~ A_Lens, a ~ Maybe PollInterval, b ~ Maybe PollInterval) => LabelOptic "pollInterval" k (EventSuccess result trigger) (EventSuccess result trigger) a b Source # 
Instance details

Defined in Navi.Event.Types

Methods

labelOptic :: Optic k NoIx (EventSuccess result trigger) (EventSuccess result trigger) a b Source #

(k ~ A_Lens, a ~ (result -> Maybe (trigger, NaviNote)), b ~ (result -> Maybe (trigger, NaviNote))) => LabelOptic "raiseAlert" k (EventSuccess result trigger) (EventSuccess result trigger) a b Source # 
Instance details

Defined in Navi.Event.Types

Methods

labelOptic :: Optic k NoIx (EventSuccess result trigger) (EventSuccess result trigger) a b Source #

(k ~ A_Lens, a ~ RepeatEvent trigger, b ~ RepeatEvent trigger) => LabelOptic "repeatEvent" k (EventSuccess result trigger) (EventSuccess result trigger) a b Source # 
Instance details

Defined in Navi.Event.Types

Methods

labelOptic :: Optic k NoIx (EventSuccess result trigger) (EventSuccess result trigger) a b Source #

(k ~ A_Lens, a ~ result, b ~ result) => LabelOptic "result" k (EventSuccess result trigger) (EventSuccess result trigger) a b Source # 
Instance details

Defined in Navi.Event.Types

Methods

labelOptic :: Optic k NoIx (EventSuccess result trigger) (EventSuccess result trigger) a b Source #