packages feed

taskell-1.11.2: src/Taskell/Events/Actions/Modal.hs

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

import ClassyPrelude

import Control.Lens ((^.))

import Graphics.Vty.Input.Events
import Taskell.Events.State.Types      (Stateful, mode)
import Taskell.Events.State.Types.Mode (ModalType (..), Mode (Modal))

import qualified Taskell.Events.Actions.Modal.Detail as Detail
import qualified Taskell.Events.Actions.Modal.Due    as Due
import qualified Taskell.Events.Actions.Modal.Help   as Help
import qualified Taskell.Events.Actions.Modal.MoveTo as MoveTo

event :: Event -> Stateful
event e s =
    case s ^. mode of
        Modal Help {}   -> Help.event e s
        Modal Detail {} -> Detail.event e s
        Modal MoveTo    -> MoveTo.event e s
        Modal Due {}    -> Due.event e s
        _               -> pure s