module Matterhorn.Events.PostListOverlay where

import           Prelude ()
import           Matterhorn.Prelude

import qualified Graphics.Vty as Vty

import           Matterhorn.Types
import           Matterhorn.Events.Keybindings
import           Matterhorn.State.PostListOverlay


onEventPostListOverlay :: Vty.Event -> MH ()
onEventPostListOverlay :: Event -> MH ()
onEventPostListOverlay =
  MH Bool -> MH ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (MH Bool -> MH ()) -> (Event -> MH Bool) -> Event -> MH ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (KeyConfig -> KeyHandlerMap)
-> (Event -> MH ()) -> Event -> MH Bool
handleKeyboardEvent KeyConfig -> KeyHandlerMap
postListOverlayKeybindings (MH () -> Event -> MH ()
forall a b. a -> b -> a
const (MH () -> Event -> MH ()) -> MH () -> Event -> MH ()
forall a b. (a -> b) -> a -> b
$ () -> MH ()
forall (m :: * -> *) a. Monad m => a -> m a
return ())

-- | The keybindings we want to use while viewing a post list overlay
postListOverlayKeybindings :: KeyConfig -> KeyHandlerMap
postListOverlayKeybindings :: KeyConfig -> KeyHandlerMap
postListOverlayKeybindings = [KeyEventHandler] -> KeyConfig -> KeyHandlerMap
mkKeybindings [KeyEventHandler]
postListOverlayKeyHandlers

postListOverlayKeyHandlers :: [KeyEventHandler]
postListOverlayKeyHandlers :: [KeyEventHandler]
postListOverlayKeyHandlers =
  [ KeyEvent -> Text -> MH () -> KeyEventHandler
mkKb KeyEvent
CancelEvent Text
"Exit post browsing" MH ()
exitPostListMode
  , KeyEvent -> Text -> MH () -> KeyEventHandler
mkKb KeyEvent
SelectUpEvent Text
"Select the previous message" MH ()
postListSelectUp
  , KeyEvent -> Text -> MH () -> KeyEventHandler
mkKb KeyEvent
SelectDownEvent Text
"Select the next message" MH ()
postListSelectDown
  , KeyEvent -> Text -> MH () -> KeyEventHandler
mkKb KeyEvent
FlagMessageEvent Text
"Toggle the selected message flag" MH ()
postListUnflagSelected
  , KeyEvent -> Text -> MH () -> KeyEventHandler
mkKb KeyEvent
ActivateListItemEvent Text
"Jump to and select current message" MH ()
postListJumpToCurrent
  ]