module Matterhorn.Draw.ChannelSelectPrompt ( drawChannelSelectPrompt ) where import Prelude () import Matterhorn.Prelude import Brick import Brick.Widgets.Edit ( renderEditor ) import qualified Data.Text as T import Network.Mattermost.Types ( TeamId) import Matterhorn.Types import Matterhorn.Themes drawChannelSelectPrompt :: ChatState -> TeamId -> Widget Name drawChannelSelectPrompt :: ChatState -> TeamId -> Widget Name drawChannelSelectPrompt ChatState st TeamId tId = Size -> Size -> RenderM Name (Result Name) -> Widget Name forall n. Size -> Size -> RenderM n (Result n) -> Widget n Widget Size Greedy Size Greedy (RenderM Name (Result Name) -> Widget Name) -> RenderM Name (Result Name) -> Widget Name forall a b. (a -> b) -> a -> b $ do Context Name ctx <- RenderM Name (Context Name) forall n. RenderM n (Context n) getContext let rowOffset :: Int rowOffset = Context Name ctxContext Name -> Getting Int (Context Name) Int -> Int forall s a. s -> Getting a s a -> a ^.Getting Int (Context Name) Int forall n (f :: * -> *). Functor f => (Int -> f Int) -> Context n -> f (Context n) availHeightL Int -> Int -> Int forall a. Num a => a -> a -> a - Int 1 e :: Editor Text Name e = ChatState stChatState -> Getting (Editor Text Name) ChatState (Editor Text Name) -> Editor Text Name forall s a. s -> Getting a s a -> a ^.TeamId -> Lens' ChatState TeamState csTeam(TeamId tId)((TeamState -> Const (Editor Text Name) TeamState) -> ChatState -> Const (Editor Text Name) ChatState) -> ((Editor Text Name -> Const (Editor Text Name) (Editor Text Name)) -> TeamState -> Const (Editor Text Name) TeamState) -> Getting (Editor Text Name) ChatState (Editor Text Name) forall b c a. (b -> c) -> (a -> b) -> a -> c .(ChannelSelectState -> Const (Editor Text Name) ChannelSelectState) -> TeamState -> Const (Editor Text Name) TeamState Lens' TeamState ChannelSelectState tsChannelSelectState((ChannelSelectState -> Const (Editor Text Name) ChannelSelectState) -> TeamState -> Const (Editor Text Name) TeamState) -> ((Editor Text Name -> Const (Editor Text Name) (Editor Text Name)) -> ChannelSelectState -> Const (Editor Text Name) ChannelSelectState) -> (Editor Text Name -> Const (Editor Text Name) (Editor Text Name)) -> TeamState -> Const (Editor Text Name) TeamState forall b c a. (b -> c) -> (a -> b) -> a -> c .(Editor Text Name -> Const (Editor Text Name) (Editor Text Name)) -> ChannelSelectState -> Const (Editor Text Name) ChannelSelectState Lens' ChannelSelectState (Editor Text Name) channelSelectInput Widget Name -> RenderM Name (Result Name) forall n. Widget n -> RenderM n (Result n) render (Widget Name -> RenderM Name (Result Name)) -> Widget Name -> RenderM Name (Result Name) forall a b. (a -> b) -> a -> b $ Location -> Widget Name -> Widget Name forall n. Location -> Widget n -> Widget n translateBy ((Int, Int) -> Location Location (Int 0, Int rowOffset)) (Widget Name -> Widget Name) -> Widget Name -> Widget Name forall a b. (a -> b) -> a -> b $ AttrName -> Widget Name -> Widget Name forall n. AttrName -> Widget n -> Widget n withDefAttr AttrName channelSelectPromptAttr (Widget Name -> Widget Name) -> Widget Name -> Widget Name forall a b. (a -> b) -> a -> b $ (Text -> Widget Name forall n. Text -> Widget n txt Text "Switch to channel [use ^ and $ to anchor]: ") Widget Name -> Widget Name -> Widget Name forall n. Widget n -> Widget n -> Widget n <+> (([Text] -> Widget Name) -> Bool -> Editor Text Name -> Widget Name forall n t. (Ord n, Show n, Monoid t, TextWidth t, GenericTextZipper t) => ([t] -> Widget n) -> Bool -> Editor t n -> Widget n renderEditor (Text -> Widget Name forall n. Text -> Widget n txt (Text -> Widget Name) -> ([Text] -> Text) -> [Text] -> Widget Name forall b c a. (b -> c) -> (a -> b) -> a -> c . [Text] -> Text T.concat) Bool True Editor Text Name e)