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

ui: Add request context for error flash

- webui: Update mailbox, attachment paths
This commit is contained in:
James Hillyerd
2018-12-15 20:16:20 -08:00
parent 6fd13a5215
commit caec5e7c17
12 changed files with 247 additions and 86 deletions

View File

@@ -28,7 +28,7 @@ init =
type Msg
= GreetingLoaded (Result Http.Error String)
= GreetingLoaded (Result HttpUtil.Error String)
update : Session -> Msg -> Model -> ( Model, Cmd Msg, Session.Msg )
@@ -38,7 +38,7 @@ update session msg model =
( Model greeting, Cmd.none, Session.none )
GreetingLoaded (Err err) ->
( model, Cmd.none, Session.SetFlash (HttpUtil.errorString err) )
( model, Cmd.none, Session.SetFlash (HttpUtil.errorFlash err) )

View File

@@ -125,20 +125,20 @@ subscriptions model =
type Msg
= ListLoaded (Result Http.Error (List MessageHeader))
= ListLoaded (Result HttpUtil.Error (List MessageHeader))
| ClickMessage MessageID
| OpenMessage MessageID
| MessageLoaded (Result Http.Error Message)
| MessageLoaded (Result HttpUtil.Error Message)
| MessageBody Body
| OpenedTime Posix
| MarkSeenTick Posix
| MarkedSeen (Result Http.Error ())
| MarkedSeen (Result HttpUtil.Error ())
| DeleteMessage Message
| DeletedMessage (Result Http.Error ())
| DeletedMessage (Result HttpUtil.Error ())
| PurgeMailboxPrompt
| PurgeMailboxCanceled
| PurgeMailboxConfirmed
| PurgedMailbox (Result Http.Error ())
| PurgedMailbox (Result HttpUtil.Error ())
| OnSearchInput String
| Tick Posix
@@ -166,7 +166,7 @@ update session msg model =
( model, Cmd.none, Session.none )
DeletedMessage (Err err) ->
( model, Cmd.none, Session.SetFlash (HttpUtil.errorString err) )
( model, Cmd.none, Session.SetFlash (HttpUtil.errorFlash err) )
ListLoaded (Ok headers) ->
case model.state of
@@ -188,19 +188,19 @@ update session msg model =
( model, Cmd.none, Session.none )
ListLoaded (Err err) ->
( model, Cmd.none, Session.SetFlash (HttpUtil.errorString err) )
( model, Cmd.none, Session.SetFlash (HttpUtil.errorFlash err) )
MarkedSeen (Ok _) ->
( model, Cmd.none, Session.none )
MarkedSeen (Err err) ->
( model, Cmd.none, Session.SetFlash (HttpUtil.errorString err) )
( model, Cmd.none, Session.SetFlash (HttpUtil.errorFlash err) )
MessageLoaded (Ok message) ->
updateMessageResult model message
MessageLoaded (Err err) ->
( model, Cmd.none, Session.SetFlash (HttpUtil.errorString err) )
( model, Cmd.none, Session.SetFlash (HttpUtil.errorFlash err) )
MessageBody bodyMode ->
( { model | bodyMode = bodyMode }, Cmd.none, Session.none )
@@ -249,7 +249,7 @@ update session msg model =
( model, Cmd.none, Session.none )
PurgedMailbox (Err err) ->
( model, Cmd.none, Session.SetFlash (HttpUtil.errorString err) )
( model, Cmd.none, Session.SetFlash (HttpUtil.errorFlash err) )
MarkSeenTick now ->
case model.state of
@@ -533,7 +533,7 @@ viewMessage : Time.Zone -> Message -> Body -> Html Msg
viewMessage zone message bodyMode =
let
sourceUrl =
"/serve/m/" ++ message.mailbox ++ "/" ++ message.id ++ "/source"
Api.serveUrl [ "mailbox", message.mailbox, message.id, "source" ]
in
div []
[ div [ class "button-bar" ]
@@ -596,22 +596,25 @@ messageBody message bodyMode =
attachments : Message -> Html Msg
attachments message =
let
baseUrl =
"/serve/m/attach/" ++ message.mailbox ++ "/" ++ message.id ++ "/"
in
if List.isEmpty message.attachments then
div [] []
else
table [ class "attachments well" ] (List.map (attachmentRow baseUrl) message.attachments)
table [ class "attachments well" ] (List.map (attachmentRow message) message.attachments)
attachmentRow : String -> Message.Attachment -> Html Msg
attachmentRow baseUrl attach =
attachmentRow : Message -> Message.Attachment -> Html Msg
attachmentRow message attach =
let
url =
baseUrl ++ attach.id ++ "/" ++ attach.fileName
Api.serveUrl
[ "mailbox"
, message.mailbox
, message.id
, "attach"
, attach.id
, attach.fileName
]
in
tr []
[ td []

View File

@@ -69,7 +69,13 @@ update session msg model =
( { model | messages = header :: model.messages }, Cmd.none, Session.none )
MessageReceived (Err err) ->
( model, Cmd.none, Session.SetFlash (D.errorToString err) )
( model
, Cmd.none
, Session.SetFlash
{ title = "Decoding failed"
, table = [ ( "Error", D.errorToString err ) ]
}
)
OpenMessage header ->
( model

View File

@@ -101,8 +101,8 @@ subscriptions model =
type Msg
= MetricsReceived (Result Http.Error Metrics)
| ServerConfigLoaded (Result Http.Error ServerConfig)
= MetricsReceived (Result HttpUtil.Error Metrics)
| ServerConfigLoaded (Result HttpUtil.Error ServerConfig)
| Tick Posix
@@ -113,13 +113,13 @@ update session msg model =
( updateMetrics metrics model, Cmd.none, Session.none )
MetricsReceived (Err err) ->
( model, Cmd.none, Session.SetFlash (HttpUtil.errorString err) )
( model, Cmd.none, Session.SetFlash (HttpUtil.errorFlash err) )
ServerConfigLoaded (Ok config) ->
( { model | config = Just config }, Cmd.none, Session.none )
ServerConfigLoaded (Err err) ->
( model, Cmd.none, Session.SetFlash (HttpUtil.errorString err) )
( model, Cmd.none, Session.SetFlash (HttpUtil.errorFlash err) )
Tick time ->
( { model | now = time }, Api.getServerMetrics MetricsReceived, Session.none )