module Taskell.Events.Actions.Search
    ( event
    ) where

import ClassyPrelude

import Control.Lens ((^.))

import           Graphics.Vty.Input.Events
import           Taskell.Events.State
import           Taskell.Events.State.Types      (Stateful, mode)
import           Taskell.Events.State.Types.Mode (Mode (Search))
import qualified Taskell.UI.Draw.Field           as F (event)

event :: Event -> Stateful
event :: Event -> Stateful
event (EvKey Key
KEsc [Modifier]
_) State
s = Stateful
clearSearch Stateful -> Maybe State -> Maybe State
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Stateful
normalMode State
s
event (EvKey Key
KEnter [Modifier]
_) State
s = Stateful
normalMode State
s
event Event
e State
s =
    case State
s State -> Getting Mode State Mode -> Mode
forall s a. s -> Getting a s a -> a
^. Getting Mode State Mode
Lens' State Mode
mode of
        Mode
Search -> (Field -> Field) -> Stateful
appendSearch (Event -> Field -> Field
F.event Event
e) State
s
        Mode
_      -> Stateful
forall (f :: * -> *) a. Applicative f => a -> f a
pure State
s