better lens for fetching EditState from AppMode
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user