module Clckwrks.NavBar.Acid where
import Clckwrks.NavBar.Types (NavBar(..), NavBarItem(..))
import Control.Applicative ((<$>))
import Control.Monad.Reader (ask)
import Control.Monad.State (modify)
import Data.Acid (Update, Query, makeAcidic)
import Data.Data (Data, Typeable)
import Data.SafeCopy (base, deriveSafeCopy)
data NavBarState = NavBarState
{ navBar :: NavBar
}
deriving (Eq, Read, Show, Data, Typeable)
$(deriveSafeCopy 2 'base ''NavBarState)
initialNavBarState :: NavBarState
initialNavBarState =
NavBarState { navBar = NavBar [] }
setNavBar :: NavBar
-> Update NavBarState ()
setNavBar m = modify $ \ms -> ms { navBar = m }
getNavBar :: Query NavBarState NavBar
getNavBar = navBar <$> ask
$(makeAcidic ''NavBarState ['getNavBar, 'setNavBar])