module Matterhorn.State.Help
  ( showHelpScreen
  )
where

import           Prelude ()
import           Matterhorn.Prelude

import           Brick.Main ( viewportScroll, vScrollToBeginning )

import           Matterhorn.Types


showHelpScreen :: HelpTopic -> MH ()
showHelpScreen :: HelpTopic -> MH ()
showHelpScreen HelpTopic
topic = do
    Mode
curMode <- Getting Mode ChatState Mode -> MH Mode
forall s (m :: * -> *) a. MonadState s m => Getting a s a -> m a
use ((TeamState -> Const Mode TeamState)
-> ChatState -> Const Mode ChatState
Lens' ChatState TeamState
csCurrentTeam((TeamState -> Const Mode TeamState)
 -> ChatState -> Const Mode ChatState)
-> ((Mode -> Const Mode Mode) -> TeamState -> Const Mode TeamState)
-> Getting Mode ChatState Mode
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Mode -> Const Mode Mode) -> TeamState -> Const Mode TeamState
Lens' TeamState Mode
tsMode)
    case Mode
curMode of
        ShowHelp {} -> () -> MH ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
        Mode
_ -> do
            EventM Name () -> MH ()
forall a. EventM Name a -> MH a
mh (EventM Name () -> MH ()) -> EventM Name () -> MH ()
forall a b. (a -> b) -> a -> b
$ ViewportScroll Name -> EventM Name ()
forall n. ViewportScroll n -> EventM n ()
vScrollToBeginning (Name -> ViewportScroll Name
forall n. n -> ViewportScroll n
viewportScroll Name
HelpViewport)
            Mode -> MH ()
setMode (Mode -> MH ()) -> Mode -> MH ()
forall a b. (a -> b) -> a -> b
$ HelpTopic -> Mode -> Mode
ShowHelp HelpTopic
topic Mode
curMode