{-# Language OverloadedStrings #-}

{-|
Module      : Client.Hooks
Description : Available hooks
Copyright   : (c) Dan Doel, 2016
License     : ISC
Maintainer  : dan.doel@gmail.com

The collection of all hooks available in the client.

-}

module Client.Hooks
  ( messageHooks
  ) where

import Client.Hook (MessageHook)
import Data.HashMap.Strict (HashMap, fromList)
import Data.Text (Text)

import Client.Hook.DroneBLRelay (droneblRelayHook)
import Client.Hook.Matterbridge (matterbridgeHook)
import Client.Hook.Snotice (snoticeHook)
import Client.Hook.Znc.Buffextras (buffextrasHook)

-- | All the available message hooks.
messageHooks :: HashMap Text ([Text] -> Maybe MessageHook)
messageHooks :: HashMap Text ([Text] -> Maybe MessageHook)
messageHooks = forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v
fromList
  [ (Text
"snotice", \[Text]
_ -> forall a. a -> Maybe a
Just MessageHook
snoticeHook)
  , (Text
"droneblrelay", [Text] -> Maybe MessageHook
droneblRelayHook)
  , (Text
"buffextras", [Text] -> Maybe MessageHook
buffextrasHook)
  , (Text
"matterbridge", [Text] -> Maybe MessageHook
matterbridgeHook)
  ]