module Matterhorn.Events.MessageSelect where import Prelude () import Matterhorn.Prelude import qualified Data.Text as T import qualified Graphics.Vty as Vty import Matterhorn.Events.Keybindings import Matterhorn.State.MessageSelect import Matterhorn.State.ReactionEmojiListOverlay import Matterhorn.Types messagesPerPageOperation :: Int messagesPerPageOperation :: Int messagesPerPageOperation = Int 10 onEventMessageSelect :: Vty.Event -> MH () onEventMessageSelect :: Event -> MH () onEventMessageSelect = 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 messageSelectKeybindings (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 ()) onEventMessageSelectDeleteConfirm :: Vty.Event -> MH () onEventMessageSelectDeleteConfirm :: Event -> MH () onEventMessageSelectDeleteConfirm (Vty.EvKey (Vty.KChar Char 'y') []) = do MH () deleteSelectedMessage Mode -> MH () setMode Mode Main onEventMessageSelectDeleteConfirm Event _ = Mode -> MH () setMode Mode Main messageSelectKeybindings :: KeyConfig -> KeyHandlerMap messageSelectKeybindings :: KeyConfig -> KeyHandlerMap messageSelectKeybindings = [KeyEventHandler] -> KeyConfig -> KeyHandlerMap mkKeybindings [KeyEventHandler] messageSelectKeyHandlers messageSelectKeyHandlers :: [KeyEventHandler] messageSelectKeyHandlers :: [KeyEventHandler] messageSelectKeyHandlers = [ KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent CancelEvent Text "Cancel message selection" (MH () -> KeyEventHandler) -> MH () -> KeyEventHandler forall a b. (a -> b) -> a -> b $ Mode -> MH () setMode Mode Main , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent SelectUpEvent Text "Select the previous message" MH () messageSelectUp , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent SelectDownEvent Text "Select the next message" MH () messageSelectDown , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent ScrollTopEvent Text "Scroll to top and select the oldest message" MH () messageSelectFirst , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent ScrollBottomEvent Text "Scroll to bottom and select the latest message" MH () messageSelectLast , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent PageUpEvent (String -> Text T.pack (String -> Text) -> String -> Text forall a b. (a -> b) -> a -> b $ String "Move the cursor up by " String -> String -> String forall a. Semigroup a => a -> a -> a <> Int -> String forall a. Show a => a -> String show Int messagesPerPageOperation String -> String -> String forall a. Semigroup a => a -> a -> a <> String " messages") (Int -> MH () messageSelectUpBy Int messagesPerPageOperation) , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent PageDownEvent (String -> Text T.pack (String -> Text) -> String -> Text forall a b. (a -> b) -> a -> b $ String "Move the cursor down by " String -> String -> String forall a. Semigroup a => a -> a -> a <> Int -> String forall a. Show a => a -> String show Int messagesPerPageOperation String -> String -> String forall a. Semigroup a => a -> a -> a <> String " messages") (Int -> MH () messageSelectDownBy Int messagesPerPageOperation) , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent OpenMessageURLEvent Text "Open all URLs in the selected message" MH () openSelectedMessageURLs , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent ReplyMessageEvent Text "Begin composing a reply to the selected message" MH () beginReplyCompose , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent EditMessageEvent Text "Begin editing the selected message" MH () beginEditMessage , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent DeleteMessageEvent Text "Delete the selected message (with confirmation)" MH () beginConfirmDeleteSelectedMessage , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent YankMessageEvent Text "Copy a verbatim section or message to the clipboard" MH () yankSelectedMessageVerbatim , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent YankWholeMessageEvent Text "Copy an entire message to the clipboard" MH () yankSelectedMessage , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent PinMessageEvent Text "Toggle whether the selected message is pinned" MH () pinSelectedMessage , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent FlagMessageEvent Text "Flag the selected message" MH () flagSelectedMessage , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent ViewMessageEvent Text "View the selected message" MH () viewSelectedMessage , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent FillGapEvent Text "Fetch messages for the selected gap" MH () fillSelectedGap , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent ReactToMessageEvent Text "Post a reaction to the selected message" MH () enterReactionEmojiListOverlayMode ]