In Elm Pages, is there a way to update
Shared.Model from within the
update function of a page?
My use case is following. I’m implementing a PKCE flow to obtain access token from GitLab. The token is received inside a
Page.Index.Msg where it’s also immediately used for the page specific HTTP request. But it also needs to be stored in
Shared.Model so other pages can use it.
I guess I need to somehow pass a
SharedMsg from a page module to the
Shared module, but I’m not sure how. Or maybe there is a different way?
Alternatively I thought about moving the whole PKCE logic to the
Shared module. But then I need to somehow notify the current page once the token is obtained, so it can initiate the request.
Probably I can implement it through a pair of ports - an outgoing port in
Page.Index and an incoming port in
Shared. The token is already sent through a port to be stored in
localStorage so it wouldn’t be so much more code. But that would require encoding and decoding the same value and generally seems clunky.
The question seems similar to Modifying "parent state" from child page in an elm-spa-example-like architecture but I couldn’t apply any of the suggestions there to my case.
Maybe @dillonkearns can help?