packages feed

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

module Matterhorn.Events.UserListOverlay where

import           Prelude ()
import           Matterhorn.Prelude

import qualified Graphics.Vty as Vty

import           Network.Mattermost.Types ( TeamId )

import           Matterhorn.Events.Keybindings
import           Matterhorn.State.UserListOverlay
import           Matterhorn.State.ListOverlay
import           Matterhorn.Types


onEventUserListOverlay :: TeamId -> Vty.Event -> MH ()
onEventUserListOverlay tId =
    void . onEventListOverlay tId (csTeam(tId).tsUserListOverlay) (userListOverlayKeybindings tId)

-- | The keybindings we want to use while viewing a user list overlay
userListOverlayKeybindings :: TeamId -> KeyConfig -> KeyHandlerMap
userListOverlayKeybindings tId = mkKeybindings (userListOverlayKeyHandlers tId)

userListOverlayKeyHandlers :: TeamId -> [KeyEventHandler]
userListOverlayKeyHandlers tId =
    [ mkKb CancelEvent "Close the user search list" (exitListOverlay tId (csTeam(tId).tsUserListOverlay))
    , mkKb SearchSelectUpEvent "Select the previous user" $ userListSelectUp tId
    , mkKb SearchSelectDownEvent "Select the next user" $ userListSelectDown tId
    , mkKb PageDownEvent "Page down in the user list" $ userListPageDown tId
    , mkKb PageUpEvent "Page up in the user list" $ userListPageUp tId
    , mkKb ActivateListItemEvent "Interact with the selected user" (listOverlayActivateCurrent tId (csTeam(tId).tsUserListOverlay))
    ]