1
0
mirror of https://github.com/jhillyerd/inbucket.git synced 2025-12-17 09:37:02 +00:00

ui: Move ClearFlash & ViewMailbox into Layout

This commit is contained in:
James Hillyerd
2019-02-17 11:57:10 -08:00
parent cfbd30d8b0
commit 34799b9a04
2 changed files with 46 additions and 33 deletions

View File

@@ -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)
]

View File

@@ -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