mirror of
https://github.com/jhillyerd/inbucket.git
synced 2025-12-17 17:47:03 +00:00
ui: Move ClearFlash & ViewMailbox into Layout
This commit is contained in:
@@ -31,19 +31,15 @@ type Page
|
||||
|
||||
type alias Model msg =
|
||||
{ mapMsg : Msg -> msg
|
||||
, clearFlash : msg
|
||||
, viewMailbox : String -> msg
|
||||
, menuVisible : Bool
|
||||
, recentVisible : Bool
|
||||
, mailboxName : String
|
||||
}
|
||||
|
||||
|
||||
init : (Msg -> msg) -> msg -> (String -> msg) -> Model msg
|
||||
init mapMsg clearFlash viewMailbox =
|
||||
init : (Msg -> msg) -> Model msg
|
||||
init mapMsg =
|
||||
{ mapMsg = mapMsg
|
||||
, clearFlash = clearFlash
|
||||
, viewMailbox = viewMailbox
|
||||
, menuVisible = False
|
||||
, recentVisible = False
|
||||
, mailboxName = ""
|
||||
@@ -62,22 +58,45 @@ reset model =
|
||||
|
||||
|
||||
type Msg
|
||||
= ToggleMenu
|
||||
| ShowRecent Bool
|
||||
= ClearFlash
|
||||
| OnMailboxNameInput String
|
||||
| OpenMailbox
|
||||
| ShowRecent Bool
|
||||
| ToggleMenu
|
||||
|
||||
|
||||
update : Msg -> Model msg -> Model msg
|
||||
update msg model =
|
||||
update : Msg -> Model msg -> Session -> ( Model msg, Session, Cmd msg )
|
||||
update msg model session =
|
||||
case msg of
|
||||
ToggleMenu ->
|
||||
{ model | menuVisible = not model.menuVisible }
|
||||
|
||||
ShowRecent visible ->
|
||||
{ model | recentVisible = visible }
|
||||
ClearFlash ->
|
||||
( model
|
||||
, Session.clearFlash session
|
||||
, Cmd.none
|
||||
)
|
||||
|
||||
OnMailboxNameInput name ->
|
||||
{ model | mailboxName = name }
|
||||
( { model | mailboxName = name }
|
||||
, session
|
||||
, Cmd.none
|
||||
)
|
||||
|
||||
OpenMailbox ->
|
||||
( model
|
||||
, session
|
||||
, Route.pushUrl session.key (Route.Mailbox model.mailboxName)
|
||||
)
|
||||
|
||||
ShowRecent visible ->
|
||||
( { model | recentVisible = visible }
|
||||
, session
|
||||
, Cmd.none
|
||||
)
|
||||
|
||||
ToggleMenu ->
|
||||
( { model | menuVisible = not model.menuVisible }
|
||||
, session
|
||||
, Cmd.none
|
||||
)
|
||||
|
||||
|
||||
type alias State msg =
|
||||
@@ -108,7 +127,7 @@ frame { model, session, activePage, activeMailbox, modal, content } =
|
||||
, navbarLink Status Route.Status [ text "Status" ] activePage
|
||||
, navbarRecent activePage activeMailbox model session
|
||||
, li [ class "navbar-mailbox" ]
|
||||
[ form [ Events.onSubmit (model.viewMailbox model.mailboxName) ]
|
||||
[ form [ Events.onSubmit (OpenMailbox |> model.mapMsg) ]
|
||||
[ input
|
||||
[ type_ "text"
|
||||
, placeholder "mailbox"
|
||||
@@ -148,7 +167,7 @@ frameModal maybeModal =
|
||||
|
||||
|
||||
errorFlash : Model msg -> Maybe Session.Flash -> Html msg
|
||||
errorFlash controls maybeFlash =
|
||||
errorFlash model maybeFlash =
|
||||
let
|
||||
row ( heading, message ) =
|
||||
tr []
|
||||
@@ -164,7 +183,7 @@ errorFlash controls maybeFlash =
|
||||
div [ class "well well-error" ]
|
||||
[ div [ class "flash-header" ]
|
||||
[ h2 [] [ text flash.title ]
|
||||
, a [ href "#", Events.onClick controls.clearFlash ] [ text "Close" ]
|
||||
, a [ href "#", Events.onClick (ClearFlash |> model.mapMsg) ] [ text "Close" ]
|
||||
]
|
||||
, div [ class "flash-table" ] (List.map row flash.table)
|
||||
]
|
||||
|
||||
@@ -61,7 +61,7 @@ init configValue location key =
|
||||
Home.init session
|
||||
|
||||
initModel =
|
||||
{ layout = Layout.init LayoutMsg ClearFlash ViewMailbox
|
||||
{ layout = Layout.init LayoutMsg
|
||||
, page = Home subModel
|
||||
}
|
||||
|
||||
@@ -79,8 +79,6 @@ type Msg
|
||||
| LinkClicked UrlRequest
|
||||
| SessionUpdated (Result D.Error Session.Persistent)
|
||||
| TimeZoneLoaded Time.Zone
|
||||
| ClearFlash
|
||||
| ViewMailbox String
|
||||
| LayoutMsg Layout.Msg
|
||||
| HomeMsg Home.Msg
|
||||
| MailboxMsg Mailbox.Msg
|
||||
@@ -179,11 +177,6 @@ updateMain msg model session =
|
||||
, Cmd.none
|
||||
)
|
||||
|
||||
ClearFlash ->
|
||||
( applyToModelSession Session.clearFlash model
|
||||
, Cmd.none
|
||||
)
|
||||
|
||||
SessionUpdated (Ok persistent) ->
|
||||
( updateSession model { session | persistent = persistent }
|
||||
, Cmd.none
|
||||
@@ -205,13 +198,14 @@ updateMain msg model session =
|
||||
, Cmd.none
|
||||
)
|
||||
|
||||
ViewMailbox name ->
|
||||
( applyToModelSession Session.clearFlash model
|
||||
, Route.pushUrl session.key (Route.Mailbox name)
|
||||
)
|
||||
|
||||
LayoutMsg subMsg ->
|
||||
( { model | layout = Layout.update subMsg model.layout }, Cmd.none )
|
||||
let
|
||||
( layout, newSession, cmd ) =
|
||||
Layout.update subMsg model.layout session
|
||||
in
|
||||
( updateSession { model | layout = layout } newSession
|
||||
, cmd
|
||||
)
|
||||
|
||||
_ ->
|
||||
updatePage msg model
|
||||
|
||||
Reference in New Issue
Block a user