My app has several layers of nested components. Various components 
throughout the tree will need to interact with our API via http requests. 
If any API request returns a 401 - Not Authorized error, or a Timeout 
Error, the error needs to bubble up to the root component where is can be 
handled appropriately.

What is the most idiomatic way of dealing with this? 

*1. Parent should pattern match against important child messages*: Reference 
<https://groups.google.com/d/msg/elm-discuss/QPqrJd4C78Y/_TLLg81SAQAJ>
This could work, but would be unreasonable in this case. The root component 
would need to match against every failing api http request made by every 
child, grandchild, great-grandchild, etc, component in the tree. If a 
single pattern is missed, the app would be in an error state, so this is 
prone to mistakes.

*2. Nested Components return additional info from the "update" function*: 
Reference 
<http://stackoverflow.com/questions/37328203/elm-0-17-how-to-subscribe-to-sibling-nested-component-changes>
Each component returns an additional value from its update function like 
this:
update : Msg -> Model -> (Model, Cmd Msg, SomeInfo)

The parent component could inspect the returned "SomeInfo" value from its 
direct children, and act on that information if necessary.  In my case, any 
nested component that makes http requests to our API would be responsible 
for returning a APINotAuthorized and APITimeout value to its parent, and 
its parent would do the same, until the error has bubbled up to the root 
component.


Option 2 is simple and robust, and can be used to pass messages of any 
type, for any situation... but I'm wondering if I'm missing an obvious 3rd 
solution?

-- 
You received this message because you are subscribed to the Google Groups "Elm 
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elm-discuss+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to