{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedLists #-}

module Events.Actions.Modal.Due
    ( event
    , events
    ) where

import ClassyPrelude

import Events.Actions.Types      as A (ActionType (..))
import Events.State              (normalMode, store, write)
import Events.State.Modal.Detail (showDetail)
import Events.State.Modal.Due    (clearDate, goto, next, previous)
import Events.State.Types        (Stateful)
import Graphics.Vty.Input.Events (Event (EvKey))
import IO.Keyboard.Types         (Actions)

events :: Actions
events =
    [ (A.Previous, previous)
    , (A.Next, next)
    , (A.Detail, (showDetail =<<) . goto)
    , (A.ClearDate, (write =<<) . (clearDate =<<) . store)
    ]

event :: Event -> Stateful
event (EvKey _ _) = normalMode
event _           = pure