1
0
mirror of https://github.com/jhillyerd/inbucket.git synced 2025-12-18 01:57: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 = type alias Model msg =
{ mapMsg : Msg -> msg { mapMsg : Msg -> msg
, clearFlash : msg
, viewMailbox : String -> msg
, menuVisible : Bool , menuVisible : Bool
, recentVisible : Bool , recentVisible : Bool
, mailboxName : String , mailboxName : String
} }
init : (Msg -> msg) -> msg -> (String -> msg) -> Model msg init : (Msg -> msg) -> Model msg
init mapMsg clearFlash viewMailbox = init mapMsg =
{ mapMsg = mapMsg { mapMsg = mapMsg
, clearFlash = clearFlash
, viewMailbox = viewMailbox
, menuVisible = False , menuVisible = False
, recentVisible = False , recentVisible = False
, mailboxName = "" , mailboxName = ""
@@ -62,22 +58,45 @@ reset model =
type Msg type Msg
= ToggleMenu = ClearFlash
| ShowRecent Bool
| OnMailboxNameInput String | OnMailboxNameInput String
| OpenMailbox
| ShowRecent Bool
| ToggleMenu
update : Msg -> Model msg -> Model msg update : Msg -> Model msg -> Session -> ( Model msg, Session, Cmd msg )
update msg model = update msg model session =
case msg of case msg of
ToggleMenu -> ClearFlash ->
{ model | menuVisible = not model.menuVisible } ( model
, Session.clearFlash session
ShowRecent visible -> , Cmd.none
{ model | recentVisible = visible } )
OnMailboxNameInput name -> 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 = type alias State msg =
@@ -108,7 +127,7 @@ frame { model, session, activePage, activeMailbox, modal, content } =
, navbarLink Status Route.Status [ text "Status" ] activePage , navbarLink Status Route.Status [ text "Status" ] activePage
, navbarRecent activePage activeMailbox model session , navbarRecent activePage activeMailbox model session
, li [ class "navbar-mailbox" ] , li [ class "navbar-mailbox" ]
[ form [ Events.onSubmit (model.viewMailbox model.mailboxName) ] [ form [ Events.onSubmit (OpenMailbox |> model.mapMsg) ]
[ input [ input
[ type_ "text" [ type_ "text"
, placeholder "mailbox" , placeholder "mailbox"
@@ -148,7 +167,7 @@ frameModal maybeModal =
errorFlash : Model msg -> Maybe Session.Flash -> Html msg errorFlash : Model msg -> Maybe Session.Flash -> Html msg
errorFlash controls maybeFlash = errorFlash model maybeFlash =
let let
row ( heading, message ) = row ( heading, message ) =
tr [] tr []
@@ -164,7 +183,7 @@ errorFlash controls maybeFlash =
div [ class "well well-error" ] div [ class "well well-error" ]
[ div [ class "flash-header" ] [ div [ class "flash-header" ]
[ h2 [] [ text flash.title ] [ 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) , div [ class "flash-table" ] (List.map row flash.table)
] ]

View File

@@ -61,7 +61,7 @@ init configValue location key =
Home.init session Home.init session
initModel = initModel =
{ layout = Layout.init LayoutMsg ClearFlash ViewMailbox { layout = Layout.init LayoutMsg
, page = Home subModel , page = Home subModel
} }
@@ -79,8 +79,6 @@ type Msg
| LinkClicked UrlRequest | LinkClicked UrlRequest
| SessionUpdated (Result D.Error Session.Persistent) | SessionUpdated (Result D.Error Session.Persistent)
| TimeZoneLoaded Time.Zone | TimeZoneLoaded Time.Zone
| ClearFlash
| ViewMailbox String
| LayoutMsg Layout.Msg | LayoutMsg Layout.Msg
| HomeMsg Home.Msg | HomeMsg Home.Msg
| MailboxMsg Mailbox.Msg | MailboxMsg Mailbox.Msg
@@ -179,11 +177,6 @@ updateMain msg model session =
, Cmd.none , Cmd.none
) )
ClearFlash ->
( applyToModelSession Session.clearFlash model
, Cmd.none
)
SessionUpdated (Ok persistent) -> SessionUpdated (Ok persistent) ->
( updateSession model { session | persistent = persistent } ( updateSession model { session | persistent = persistent }
, Cmd.none , Cmd.none
@@ -205,13 +198,14 @@ updateMain msg model session =
, Cmd.none , Cmd.none
) )
ViewMailbox name ->
( applyToModelSession Session.clearFlash model
, Route.pushUrl session.key (Route.Mailbox name)
)
LayoutMsg subMsg -> 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 updatePage msg model