1
0
mirror of https://github.com/jhillyerd/inbucket.git synced 2026-01-27 13:35:59 +00:00

ui: Remove Session from Main model

This commit is contained in:
James Hillyerd
2018-12-24 13:14:38 -08:00
parent 7c213cd897
commit 2f7194835d
6 changed files with 149 additions and 227 deletions

View File

@@ -81,7 +81,7 @@ type alias Model =
}
init : Session -> String -> Maybe MessageID -> ( Model, Cmd Msg, Session.Msg )
init : Session -> String -> Maybe MessageID -> ( Model, Cmd Msg )
init session mailboxName selection =
( { session = session
, mailboxName = mailboxName
@@ -92,7 +92,6 @@ init session mailboxName selection =
, now = Time.millisToPosix 0
}
, load mailboxName
, Session.none
)
@@ -152,32 +151,30 @@ type Msg
| Tick Posix
update : Session -> Msg -> Model -> ( Model, Cmd Msg, Session.Msg )
update session msg model =
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
case msg of
ClickMessage id ->
( updateSelected { model | session = Session.disableRouting model.session } id
, Cmd.batch
[ -- Update browser location.
Route.replaceUrl session.key (Route.Message model.mailboxName id)
Route.replaceUrl model.session.key (Route.Message model.mailboxName id)
, Api.getMessage MessageLoaded model.mailboxName id
]
, Session.none
)
OpenMessage id ->
updateOpenMessage session model id
updateOpenMessage model.session model id
DeleteMessage message ->
updateDeleteMessage session model message
updateDeleteMessage model.session model message
DeletedMessage (Ok _) ->
( model, Cmd.none, Session.none )
( model, Cmd.none )
DeletedMessage (Err err) ->
( { model | session = Session.showFlash (HttpUtil.errorFlash err) model.session }
, Cmd.none
, Session.none
)
ListLoaded (Ok headers) ->
@@ -191,32 +188,29 @@ update session msg model =
in
case selection of
Just id ->
updateOpenMessage session newModel id
updateOpenMessage model.session newModel id
Nothing ->
( { model
( { newModel
| session = Session.addRecent model.mailboxName model.session
}
, Cmd.none
, Session.none
)
_ ->
( model, Cmd.none, Session.none )
( model, Cmd.none )
ListLoaded (Err err) ->
( { model | session = Session.showFlash (HttpUtil.errorFlash err) model.session }
, Cmd.none
, Session.none
)
MarkedSeen (Ok _) ->
( model, Cmd.none, Session.none )
( model, Cmd.none )
MarkedSeen (Err err) ->
( { model | session = Session.showFlash (HttpUtil.errorFlash err) model.session }
, Cmd.none
, Session.none
)
MessageLoaded (Ok message) ->
@@ -225,11 +219,10 @@ update session msg model =
MessageLoaded (Err err) ->
( { model | session = Session.showFlash (HttpUtil.errorFlash err) model.session }
, Cmd.none
, Session.none
)
MessageBody bodyMode ->
( { model | bodyMode = bodyMode }, Cmd.none, Session.none )
( { model | bodyMode = bodyMode }, Cmd.none )
OnSearchInput searchInput ->
updateSearchInput model searchInput
@@ -238,7 +231,7 @@ update session msg model =
case model.state of
ShowingList list (ShowingMessage visible) ->
if visible.message.seen then
( model, Cmd.none, Session.none )
( model, Cmd.none )
else
-- Set 1500ms delay before reporting message as seen to backend.
@@ -256,28 +249,26 @@ update session msg model =
)
}
, Cmd.none
, Session.none
)
_ ->
( model, Cmd.none, Session.none )
( model, Cmd.none )
PurgeMailboxPrompt ->
( { model | promptPurge = True }, Cmd.none, Session.none )
( { model | promptPurge = True }, Cmd.none )
PurgeMailboxCanceled ->
( { model | promptPurge = False }, Cmd.none, Session.none )
( { model | promptPurge = False }, Cmd.none )
PurgeMailboxConfirmed ->
updatePurge session model
updatePurge model.session model
PurgedMailbox (Ok _) ->
( model, Cmd.none, Session.none )
( model, Cmd.none )
PurgedMailbox (Err err) ->
( { model | session = Session.showFlash (HttpUtil.errorFlash err) model.session }
, Cmd.none
, Session.none
)
MarkSeenTick now ->
@@ -289,21 +280,21 @@ update session msg model =
updateMarkMessageSeen model message
else
( model, Cmd.none, Session.none )
( model, Cmd.none )
Nothing ->
( model, Cmd.none, Session.none )
( model, Cmd.none )
_ ->
( model, Cmd.none, Session.none )
( model, Cmd.none )
Tick now ->
( { model | now = now }, Cmd.none, Session.none )
( { model | now = now }, Cmd.none )
{-| Replace the currently displayed message.
-}
updateMessageResult : Model -> Message -> ( Model, Cmd Msg, Session.Msg )
updateMessageResult : Model -> Message -> ( Model, Cmd Msg )
updateMessageResult model message =
let
bodyMode =
@@ -315,7 +306,7 @@ updateMessageResult model message =
in
case model.state of
LoadingList _ ->
( model, Cmd.none, Session.none )
( model, Cmd.none )
ShowingList list _ ->
( { model
@@ -326,11 +317,10 @@ updateMessageResult model message =
, bodyMode = bodyMode
}
, Task.perform OpenedTime Time.now
, Session.none
)
updatePurge : Session -> Model -> ( Model, Cmd Msg, Session.Msg )
updatePurge : Session -> Model -> ( Model, Cmd Msg )
updatePurge session model =
let
cmd =
@@ -347,14 +337,13 @@ updatePurge session model =
, state = ShowingList (MessageList [] Nothing "") NoMessage
}
, cmd
, Session.none
)
_ ->
( model, cmd, Session.none )
( model, cmd )
updateSearchInput : Model -> String -> ( Model, Cmd Msg, Session.Msg )
updateSearchInput : Model -> String -> ( Model, Cmd Msg )
updateSearchInput model searchInput =
let
searchFilter =
@@ -366,7 +355,7 @@ updateSearchInput model searchInput =
in
case model.state of
LoadingList _ ->
( model, Cmd.none, Session.none )
( model, Cmd.none )
ShowingList list messageState ->
( { model
@@ -374,7 +363,6 @@ updateSearchInput model searchInput =
, state = ShowingList { list | searchFilter = searchFilter } messageState
}
, Cmd.none
, Session.none
)
@@ -406,7 +394,7 @@ updateSelected model id =
{ model | state = ShowingList newList (Transitioning visible) }
updateDeleteMessage : Session -> Model -> Message -> ( Model, Cmd Msg, Session.Msg )
updateDeleteMessage : Session -> Model -> Message -> ( Model, Cmd Msg )
updateDeleteMessage session model message =
let
filter f messageList =
@@ -423,14 +411,13 @@ updateDeleteMessage session model message =
[ Api.deleteMessage DeletedMessage message.mailbox message.id
, Route.replaceUrl session.key (Route.Mailbox model.mailboxName)
]
, Session.none
)
_ ->
( model, Cmd.none, Session.none )
( model, Cmd.none )
updateMarkMessageSeen : Model -> Message -> ( Model, Cmd Msg, Session.Msg )
updateMarkMessageSeen : Model -> Message -> ( Model, Cmd Msg )
updateMarkMessageSeen model message =
case model.state of
ShowingList list (ShowingMessage visible) ->
@@ -456,14 +443,13 @@ updateMarkMessageSeen model message =
)
}
, Api.markMessageSeen MarkedSeen message.mailbox message.id
, Session.None
)
_ ->
( model, Cmd.none, Session.none )
( model, Cmd.none )
updateOpenMessage : Session -> Model -> String -> ( Model, Cmd Msg, Session.Msg )
updateOpenMessage : Session -> Model -> String -> ( Model, Cmd Msg )
updateOpenMessage session model id =
let
newModel =
@@ -471,7 +457,6 @@ updateOpenMessage session model id =
in
( updateSelected newModel id
, Api.getMessage MessageLoaded model.mailboxName id
, Session.none
)
@@ -479,8 +464,8 @@ updateOpenMessage session model id =
-- VIEW
view : Session -> Model -> { title : String, modal : Maybe (Html Msg), content : List (Html Msg) }
view session model =
view : Model -> { title : String, modal : Maybe (Html Msg), content : List (Html Msg) }
view model =
{ title = model.mailboxName ++ " - Inbucket"
, modal = viewModal model.promptPurge
, content =
@@ -499,7 +484,7 @@ view session model =
]
[ i [ class "fas fa-trash" ] [] ]
]
, viewMessageList session model
, viewMessageList model.session model
, main_
[ class "message" ]
[ case model.state of
@@ -510,10 +495,10 @@ view session model =
)
ShowingList _ (ShowingMessage { message }) ->
viewMessage session.zone message model.bodyMode
viewMessage model.session.zone message model.bodyMode
ShowingList _ (Transitioning { message }) ->
viewMessage session.zone message model.bodyMode
viewMessage model.session.zone message model.bodyMode
_ ->
text ""