packages feed

matterhorn-50200.16.0: src/Matterhorn/Events/PostListOverlay.hs

module Matterhorn.Events.PostListOverlay where

import           Prelude ()
import           Matterhorn.Prelude

import qualified Graphics.Vty as Vty

import           Network.Mattermost.Types ( TeamId )

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


onEventPostListOverlay :: TeamId -> Vty.Event -> MH ()
onEventPostListOverlay tId =
  void . handleKeyboardEvent (postListOverlayKeybindings tId) (const $ return ())

-- | The keybindings we want to use while viewing a post list overlay
postListOverlayKeybindings :: TeamId -> KeyConfig -> KeyHandlerMap
postListOverlayKeybindings tId = mkKeybindings (postListOverlayKeyHandlers tId)

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