Response utilities in Elm Architecture. Like, build responses from tasks, pipe them, map over.
What's in a response?
type alias Response model action = ( model, Cmd action )
This package offers alternate ways to construct and transform responses:
res
andtaskRes
for inline constructswithCmd
,withCmds
,withTask
andwithNone
for piped (|>
) constructsmapModel
,mapCmd
andmapBoth
for transformationsandThen
for sequencing multiple updates
Typical usage examples in update
function:
update : Action -> Model -> Response Model Action
update action model =
case action of
Foo bar baz ->
-- ( { model | someLongFieldName = foo }, Task.perform handleResult (someTaskBuilder baz) )
res
{ model | someLongFieldName = foo }
(Task.attempt handleResult (someTaskBuilder baz))
Taz ->
-- ( {model | taz = True}, Cmd.none )
{ model | taz = True }
|> withNone
SubAction subAction ->
-- let
-- ( newSub, newSubCmd ) =
-- subActionUpdate subAction model.sub
-- in
-- ( { model | sub = newSub }, Cmd.map SubAction newSubCmd )
subActionUpdate subAction model.sub
|> mapBoth (\sub -> { model | sub = sub }) SubAction