1
0
mirror of https://github.com/jhillyerd/inbucket.git synced 2026-01-10 13:15:56 +00:00

Effects refactor continued (#177)

* Use Effects instead of replaceUrl in Mailbox
* Add Effect.navigateRoute to handle monitor message clicks
* Add a focusModal effect for mailbox purge
* Remove temporary Cmd wrapper Effect
This commit is contained in:
James Hillyerd
2020-09-13 17:08:11 -07:00
committed by GitHub
parent 8adfd82232
commit 5c5b0f819b
3 changed files with 77 additions and 53 deletions

View File

@@ -1,7 +1,6 @@
module Page.Mailbox exposing (Model, Msg, init, subscriptions, update, view)
import Api
import Browser.Navigation as Nav
import Data.Message as Message exposing (Message)
import Data.MessageHeader exposing (MessageHeader)
import Data.Session exposing (Session)
@@ -161,11 +160,7 @@ update msg model =
( updateSelected model id
, Effect.batch
[ -- Update browser location.
Effect.disableRouting
, Route.Message model.mailboxName id
|> model.session.router.toPath
|> Nav.replaceUrl model.session.key
|> Effect.wrap
Effect.updateRoute (Route.Message model.mailboxName id)
, Effect.getMessage MessageLoaded model.mailboxName id
]
)
@@ -241,7 +236,7 @@ update msg model =
updateSearchInput model searchInput
PurgeMailboxPrompt ->
( { model | promptPurge = True }, Modal.resetFocusCmd ModalFocused |> Effect.wrap )
( { model | promptPurge = True }, Effect.focusModal ModalFocused )
PurgeMailboxCanceled ->
( { model | promptPurge = False }, Effect.none )
@@ -305,27 +300,15 @@ updateMessageResult model message =
-}
updateTriggerPurge : Model -> ( Model, Effect Msg )
updateTriggerPurge model =
let
effects =
Effect.batch
[ Route.Mailbox model.mailboxName
|> model.session.router.toPath
|> Nav.replaceUrl model.session.key
|> Effect.wrap
, Effect.purgeMailbox PurgedMailbox model.mailboxName
]
in
case model.state of
ShowingList _ _ ->
( { model
| promptPurge = False
, state = ShowingList (MessageList [] Nothing "") NoMessage
}
, Effect.batch [ Effect.disableRouting, effects ]
)
_ ->
( model, effects )
( { model
| promptPurge = False
, state = ShowingList (MessageList [] Nothing "") NoMessage
}
, Effect.batch
[ Effect.updateRoute (Route.Mailbox model.mailboxName)
, Effect.purgeMailbox PurgedMailbox model.mailboxName
]
)
updateSearchInput : Model -> String -> ( Model, Effect Msg )
@@ -390,11 +373,7 @@ updateDeleteMessage model message =
( { model | state = ShowingList (filter (\x -> x.id /= message.id) list) NoMessage }
, Effect.batch
[ Effect.deleteMessage DeletedMessage message.mailbox message.id
, Effect.disableRouting
, Route.Mailbox model.mailboxName
|> model.session.router.toPath
|> Nav.replaceUrl model.session.key
|> Effect.wrap
, Effect.updateRoute (Route.Mailbox model.mailboxName)
]
)