better lens for fetching EditState from AppMode

This commit is contained in:
2024-07-27 16:06:30 -04:00
parent 408e0f0f82
commit 36bc32a688
5 changed files with 5 additions and 116 deletions

View File

@@ -36,7 +36,7 @@ module Hamming.App.Types (
-- ** AppMode
AppMode (..),
-- *** Lenses
editStateL,
editState,
-- ** EditState,
EditState (..),
-- *** Lenses
@@ -54,7 +54,6 @@ module Hamming.App.Types (
import Brick.Types (BrickEvent, EventM)
import Data.Word (Word16)
import Lens.Micro (Lens', lens)
import Lens.Micro.TH (makeLenses)
-- | The main state of the application
@@ -66,7 +65,9 @@ data AppState = AppState
-- | The application's main mode
data AppMode
= DisplayMode
| EditMode EditState
| EditMode
{ _editState :: EditState
}
deriving (Eq, Show)
-- | The state of the editor
@@ -91,20 +92,10 @@ type Handler = Event -> Action ()
concat <$> mapM makeLenses
[ ''AppState
, ''AppMode
, ''EditState
]
editStateL :: Lens' AppMode (Maybe EditState)
editStateL = lens
( \case
DisplayMode -> Nothing
EditMode s -> Just s
)
( const $ \case
Just s -> EditMode s
Nothing -> DisplayMode
)
-- | Initial application state
initialState :: AppState
initialState = AppState DisplayMode 0