1
0
mirror of https://github.com/jhillyerd/inbucket.git synced 2026-01-24 20:15:58 +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)
]
)

View File

@@ -1,9 +1,8 @@
module Page.Monitor exposing (Model, Msg, init, update, view)
import Api
import Browser.Navigation as Nav
import Data.MessageHeader as MessageHeader exposing (MessageHeader)
import Data.Session as Session exposing (Session)
import Data.Session exposing (Session)
import DateFormat as DF
import Effect exposing (Effect)
import Html
@@ -102,10 +101,7 @@ update msg model =
openMessage : MessageHeader -> Model -> ( Model, Effect Msg )
openMessage header model =
( model
, Route.Message header.mailbox header.id
|> model.session.router.toPath
|> Nav.replaceUrl model.session.key
|> Effect.wrap
, Effect.navigateRoute True (Route.Message header.mailbox header.id)
)