elm-spa-example icon indicating copy to clipboard operation
elm-spa-example copied to clipboard

reduce `toSession` proliferation

Open Hermanverschooten opened this issue 5 years ago • 2 comments

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.

Hermanverschooten avatar Jun 08 '19 12:06 Hermanverschooten

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?

Sircular avatar Aug 21 '20 21:08 Sircular

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.

Hermanverschooten avatar Aug 22 '20 04:08 Hermanverschooten