1
0
mirror of https://github.com/jhillyerd/inbucket.git synced 2026-01-09 20:55:56 +00:00

ui: Move REST API calls into new Api module

This commit is contained in:
James Hillyerd
2018-12-14 20:58:42 -08:00
parent f12a72871f
commit bc427e237f
4 changed files with 114 additions and 75 deletions

View File

@@ -1,5 +1,6 @@
module Page.Home exposing (Model, Msg, init, update, view)
import Api
import Data.Session as Session exposing (Session)
import Html exposing (..)
import Html.Attributes exposing (..)
@@ -19,14 +20,7 @@ type alias Model =
init : ( Model, Cmd Msg, Session.Msg )
init =
let
cmdGreeting =
Http.get
{ url = "/serve/greeting"
, expect = Http.expectString GreetingLoaded
}
in
( Model "", cmdGreeting, Session.none )
( Model "", Api.getGreeting GreetingLoaded, Session.none )

View File

@@ -1,5 +1,6 @@
module Page.Mailbox exposing (Model, Msg, init, load, subscriptions, update, view)
import Api
import Data.Message as Message exposing (Message)
import Data.MessageHeader as MessageHeader exposing (MessageHeader)
import Data.Session as Session exposing (Session)
@@ -90,7 +91,7 @@ load : String -> Cmd Msg
load mailboxName =
Cmd.batch
[ Task.perform Tick Time.now
, getList mailboxName
, Api.getHeaderList ListLoaded mailboxName
]
@@ -150,7 +151,7 @@ update session msg model =
, Cmd.batch
[ -- Update browser location.
Route.replaceUrl session.key (Route.Message model.mailboxName id)
, getMessage model.mailboxName id
, Api.getMessage MessageLoaded model.mailboxName id
]
, Session.DisableRouting
)
@@ -306,9 +307,7 @@ updatePurge session model =
cmd =
Cmd.batch
[ Route.replaceUrl session.key (Route.Mailbox model.mailboxName)
, "/api/v1/mailbox/"
++ model.mailboxName
|> HttpUtil.delete PurgedMailbox
, Api.purgeMailbox PurgedMailbox model.mailboxName
]
in
case model.state of
@@ -380,12 +379,6 @@ updateSelected model id =
updateDeleteMessage : Session -> Model -> Message -> ( Model, Cmd Msg, Session.Msg )
updateDeleteMessage session model message =
let
url =
"/api/v1/mailbox/" ++ message.mailbox ++ "/" ++ message.id
cmd =
HttpUtil.delete DeletedMessage url
filter f messageList =
{ messageList | headers = List.filter f messageList.headers }
in
@@ -396,14 +389,14 @@ updateDeleteMessage session model message =
ShowingList (filter (\x -> x.id /= message.id) list) NoMessage
}
, Cmd.batch
[ cmd
[ Api.deleteMessage DeletedMessage message.mailbox message.id
, Route.replaceUrl session.key (Route.Mailbox model.mailboxName)
]
, Session.DisableRouting
)
_ ->
( model, cmd, Session.none )
( model, Cmd.none, Session.none )
updateMarkMessageSeen : Model -> Message -> ( Model, Cmd Msg, Session.Msg )
@@ -418,16 +411,6 @@ updateMarkMessageSeen model message =
else
header
url =
"/api/v1/mailbox/" ++ message.mailbox ++ "/" ++ message.id
command =
-- The URL tells the API what message to update, so we only need to indicate the
-- desired change in the body.
Encode.object [ ( "seen", Encode.bool True ) ]
|> Http.jsonBody
|> HttpUtil.patch MarkedSeen url
map f messageList =
{ messageList | headers = List.map f messageList.headers }
in
@@ -441,7 +424,7 @@ updateMarkMessageSeen model message =
}
)
}
, command
, Api.markMessageSeen MarkedSeen message.mailbox message.id
, Session.None
)
@@ -452,35 +435,11 @@ updateMarkMessageSeen model message =
updateOpenMessage : Session -> Model -> String -> ( Model, Cmd Msg, Session.Msg )
updateOpenMessage session model id =
( updateSelected model id
, getMessage model.mailboxName id
, Api.getMessage MessageLoaded model.mailboxName id
, Session.AddRecent model.mailboxName
)
getList : String -> Cmd Msg
getList mailboxName =
let
url =
"/api/v1/mailbox/" ++ mailboxName
in
Http.get
{ url = url
, expect = Http.expectJson ListLoaded (Decode.list MessageHeader.decoder)
}
getMessage : String -> MessageID -> Cmd Msg
getMessage mailboxName id =
let
url =
"/serve/m/" ++ mailboxName ++ "/" ++ id
in
Http.get
{ url = url
, expect = Http.expectJson MessageLoaded Message.decoder
}
-- VIEW

View File

@@ -1,5 +1,6 @@
module Page.Status exposing (Model, Msg, init, subscriptions, update, view)
import Api
import Data.Metrics as Metrics exposing (Metrics)
import Data.ServerConfig as ServerConfig exposing (ServerConfig)
import Data.Session as Session exposing (Session)
@@ -74,7 +75,7 @@ init =
}
, Cmd.batch
[ Task.perform Tick Time.now
, loadServerConfig
, Api.getServerConfig ServerConfigLoaded
]
, Session.none
)
@@ -121,7 +122,7 @@ update session msg model =
( model, Cmd.none, Session.SetFlash (HttpUtil.errorString err) )
Tick time ->
( { model | now = time }, loadMetrics, Session.none )
( { model | now = time }, Api.getServerMetrics MetricsReceived, Session.none )
{-| Update all metrics in Model; increment xCounter.
@@ -220,22 +221,6 @@ updateRemoteTotal metric value history =
}
loadMetrics : Cmd Msg
loadMetrics =
Http.get
{ url = "/debug/vars"
, expect = Http.expectJson MetricsReceived Metrics.decoder
}
loadServerConfig : Cmd Msg
loadServerConfig =
Http.get
{ url = "/serve/status"
, expect = Http.expectJson ServerConfigLoaded ServerConfig.decoder
}
-- VIEW --