Tnx im not sure this is what i want. i need to study it more.
its the "*sendTo*" bit that i want to abstract away.
On Wednesday, July 20, 2016 at 9:16:57 PM UTC+2, Peter Damoc wrote:
>
> There is a pattern where the parent creates a context for the child and
> the child uses the context to lift its language to the language of the
> parent.
>
> It looks like this:
>
> type alias Context pMsg=
> { toParent : Msg -> pMsg
> , someCmd : Cmd pMsg
> , someOtherCmd : Cmd pMsg
> }
>
> update : Context pMsg -> Msg -> Model -> (Model, Cmd pMsg)
> update ctx msg model =
> case msg of
> LocalStuff ->
> model ! [Cmd.map ctx.toParent localCmd]
>
> SomeCmd ->
> model ![ctx.someCmd]
>
> SomeOtherCmd ->
> model ![ctx.someOtherCmd]
> ....
>
> In the parent, it's just a matter of using `update` and just passing along
> the cmd it produces.
>
> Alternatively you can have just plain pMsg in the context and use succeed
> to upgrade them to `Cmd pMsg`:
>
>
> succeed msg =
> Task.perform identity identity (Task.succeed msg)
>
> type alias Context pMsg=
> { toParent : Msg -> pMsg
> , someMsg : pMsg
> , someOtherMsg : pMsg
> }
>
> update : Context pMsg -> Msg -> Model -> (Model, Cmd pMsg)
> update ctx msg model =
> case msg of
> LocalStuff ->
> model ! [Cmd.map ctx.toParent localCmd]
>
> SomeMsg ->
> model ![succeed ctx.someCmd]
>
> SomeOtherMsg ->
> model ![succeed ctx.someOtherCmd]
> ....
>
>
>
>
> On Tue, Jul 19, 2016 at 11:21 PM, Nils Eriksson <[email protected]
> <javascript:>> wrote:
>
>> Hi i have a top level websocket controller that is supposed to take care
>> of all websocket stuff and children make use of it with the help of
>> *OutMsg*.
>> This is my current solution but i feel like i can not abstract in a good
>> way. What i really want would be for the children to be able to say where
>> the reply should go
>> But i run into a issue where the children has different *Msg* types and
>> therefore i have made this kind of ugly hack with a intermediary *Union
>> type* that all children can use.
>>
>> https://gist.github.com/note89/d09dd227a151cac0ef6883fac411276a
>>
>> Would be great to learn some new concept on how to do this in a better
>> way.
>> I now want different *Notification types *and its going to get ugly
>> fast.
>>
>> Tnx !
>>
>> --
>> 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 [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> --
> There is NO FATE, we are the creators.
> blog: http://damoc.ro/
>
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.