elm-spa-example
elm-spa-example copied to clipboard
reduce `toSession` proliferation
In the code as supplied here, each page needs to have a toSession
method exposed that essentially just returns the session field out of its model. Why not make this more generic?
getSession: { a | session: Session } -> Session
getSession =
session
Then you can replace the calls in the case
statement:
...
Home home ->
Home.toSession home
Settings settings ->
Settings.toSession settings
with
...
Home home ->
getSession home
Settings settings ->
getSession settings
And there is no longer a need to have a toSession
in the pages, unless you want it.
On that note, why have the session as part of the individual page models if it needs to be shared across all of them? Why is it not part of the top-level model?
The model
here is a Type
, not a Type alias
, and you need the information in every page anyway, so you would have to pass it along.