From 23a33fc27a2be31cca2e80d130f19360c9cafe37 Mon Sep 17 00:00:00 2001 From: Jonathan Lamothe Date: Thu, 19 Sep 2019 07:33:57 -0400 Subject: [PATCH] save database on exit --- src/Mtlstats/Menu.hs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/Mtlstats/Menu.hs b/src/Mtlstats/Menu.hs index ba2c640..d3a6f62 100644 --- a/src/Mtlstats/Menu.hs +++ b/src/Mtlstats/Menu.hs @@ -30,12 +30,21 @@ module Mtlstats.Menu ( gameTypeMenu ) where -import Control.Monad.Trans.State (modify) +import Control.Monad.IO.Class (liftIO) +import Control.Monad.Trans.State (gets, modify) +import Data.Aeson (encodeFile) import Data.Char (toUpper) import Lens.Micro ((^.), (.~), (?~)) +import Lens.Micro.Extras (view) +import System.EasyFile + ( createDirectoryIfMissing + , getAppUserDataDirectory + , () + ) import qualified UI.NCurses as C import Mtlstats.Actions +import Mtlstats.Config import Mtlstats.Types import Mtlstats.Types.Menu @@ -62,7 +71,13 @@ mainMenu = Menu "*** MAIN MENU ***" True modify startNewGame >> return True , MenuItem '3' "Create Player" $ modify createPlayer >> return True - , MenuItem '4' "Exit" $ + , MenuItem '4' "Exit" $ do + db <- gets $ view database + liftIO $ do + dir <- getAppUserDataDirectory appName + let dbFile = dir dbFname + createDirectoryIfMissing True dir + encodeFile dbFile db return False ]