diff options
Diffstat (limited to 'frontend/app/Page.hs')
-rw-r--r-- | frontend/app/Page.hs | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/frontend/app/Page.hs b/frontend/app/Page.hs index e1c8415..ed1e44d 100644 --- a/frontend/app/Page.hs +++ b/frontend/app/Page.hs @@ -4,6 +4,7 @@ module Page initialPage, updatePage, viewPage, + route, ) where @@ -13,8 +14,8 @@ import Data.Bifunctor import Data.Default import Data.Function import Effect (Eff) -import Miso -import Miso.String (fromMisoString) +import Miso hiding (route) +import Miso.String (MisoString, fromMisoString) import Page.EditValue qualified as EditValue import Page.ListCollection qualified as ListCollection import Page.NewCollection qualified as NewCollection @@ -23,8 +24,8 @@ import Route qualified as Route data Page = Home - | ListCollection ListCollection.Model - | EditValue EditValue.Model + | ListCollection MisoString ListCollection.Model + | EditValue MisoString MisoString EditValue.Model | NewCollection NewCollection.Model deriving (Show, Eq) @@ -36,24 +37,30 @@ instance Default Page where initialPage :: Route -> JSM (Either SomeException Page) initialPage Route.Home = pure (Right Home) initialPage (Route.ListCollection c) = - fmap ListCollection <$> ListCollection.initialModel (Collection (fromMisoString c)) + fmap (ListCollection c) <$> ListCollection.initialModel (Collection (fromMisoString c)) initialPage (Route.EditValue c f) = - fmap EditValue <$> EditValue.initialModel (CollectionItem (Collection (fromMisoString c)) (fromMisoString f)) + fmap (EditValue c f) <$> EditValue.initialModel (CollectionItem (Collection (fromMisoString c)) (fromMisoString f)) initialPage Route.NewCollection = fmap NewCollection <$> NewCollection.initialModel +route :: Page -> Route +route Home = Route.Home +route (ListCollection c _) = Route.ListCollection c +route (EditValue c f _) = Route.EditValue c f +route (NewCollection _) = Route.NewCollection + update__handleListCollection :: ListCollection.Action -> Action update__handleListCollection action = Action $ \case - ListCollection m -> + ListCollection c m -> ListCollection.updateModel action m - & first (bimap update__handleListCollection ListCollection) + & first (bimap update__handleListCollection (ListCollection c)) p -> (noEff p, []) update__handleEditValue :: EditValue.Action -> Action update__handleEditValue action = Action $ \case - EditValue m -> + EditValue c f m -> EditValue.updateModel action m - & first (bimap update__handleEditValue EditValue) + & first (bimap update__handleEditValue (EditValue c f)) p -> (noEff p, []) update__handleNewCollection :: NewCollection.Action -> Action @@ -68,6 +75,6 @@ updatePage (Action f) m = f m viewPage :: Page -> View Action viewPage Home = text "home" -viewPage (ListCollection m) = update__handleListCollection <$> ListCollection.viewModel m -viewPage (EditValue m) = update__handleEditValue <$> EditValue.viewModel m +viewPage (ListCollection _ m) = update__handleListCollection <$> ListCollection.viewModel m +viewPage (EditValue _ _ m) = update__handleEditValue <$> EditValue.viewModel m viewPage (NewCollection m) = update__handleNewCollection <$> NewCollection.viewModel m |