Only Use Sparsely: Better split the update function into multiple smaller functions.
type Msg =
LoginSucceeded User
| InfoMessage String
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
LoginSucceeded newUser ->
( { model | currentUser = newUser }
, Cmd.none
)
InfoMessage message ->
( { model | message = Just message }
, Cmd.none
)
type Msg =
LoginSucceeded User
| InfoMessage String
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
LoginSucceeded newUser ->
( { model | currentUser = newUser }
, sendMsg <| InfoMessage "Login Successful"
)
InfoMessage message ->
( { model | message = Just message }
, Cmd.none
)
sendMsg : msg -> Cmd msg
sendMsg msg =
Task.succeed msg
|> Task.perform identity
type Msg =
LoginSucceeded User
| InfoMessage String
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
LoginSucceeded newUser ->
( model
|> updateUser newUser
|> updateMessage "Login Successful"
, Cmd.none
)
InfoMessage message ->
( model |> updateMessage message
, Cmd.none
)
updateUser : User -> Model -> Model
updateUser user model =
{ model | currentUser = user }
updateMessage : String -> Model -> Model
updateMessage message model =
{ model | message = Just message }
This is the a better solution
Question
How can I display a Message after a user logged in?