mirror of
https://github.com/jhillyerd/inbucket.git
synced 2025-12-17 17:47:03 +00:00
ui: Move selected MessageID into MessageList record
This commit is contained in:
@@ -43,9 +43,9 @@ type State
|
|||||||
|
|
||||||
type MessageState
|
type MessageState
|
||||||
= NoMessage
|
= NoMessage
|
||||||
| LoadingMessage MessageID
|
| LoadingMessage
|
||||||
| ShowingMessage VisibleMessage
|
| ShowingMessage VisibleMessage
|
||||||
| Transitioning VisibleMessage MessageID
|
| Transitioning VisibleMessage
|
||||||
|
|
||||||
|
|
||||||
type alias MessageID =
|
type alias MessageID =
|
||||||
@@ -54,6 +54,7 @@ type alias MessageID =
|
|||||||
|
|
||||||
type alias MessageList =
|
type alias MessageList =
|
||||||
{ headers : List MessageHeader
|
{ headers : List MessageHeader
|
||||||
|
, selected : Maybe MessageID
|
||||||
, searchFilter : String
|
, searchFilter : String
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,7 +154,9 @@ update session msg model =
|
|||||||
LoadingList selection ->
|
LoadingList selection ->
|
||||||
let
|
let
|
||||||
newModel =
|
newModel =
|
||||||
{ model | state = ShowingList (MessageList headers "") NoMessage }
|
{ model
|
||||||
|
| state = ShowingList (MessageList headers Nothing "") NoMessage
|
||||||
|
}
|
||||||
in
|
in
|
||||||
case selection of
|
case selection of
|
||||||
Just id ->
|
Just id ->
|
||||||
@@ -244,7 +247,10 @@ updateMessageResult model message =
|
|||||||
|
|
||||||
ShowingList list _ ->
|
ShowingList list _ ->
|
||||||
( { model
|
( { model
|
||||||
| state = ShowingList list (ShowingMessage (VisibleMessage message Nothing))
|
| state =
|
||||||
|
ShowingList
|
||||||
|
{ list | selected = Just message.id }
|
||||||
|
(ShowingMessage (VisibleMessage message Nothing))
|
||||||
, bodyMode = bodyMode
|
, bodyMode = bodyMode
|
||||||
}
|
}
|
||||||
, Task.perform OpenedTime Time.now
|
, Task.perform OpenedTime Time.now
|
||||||
@@ -280,19 +286,28 @@ updateSearchInput model searchInput =
|
|||||||
updateSelected : Model -> MessageID -> Model
|
updateSelected : Model -> MessageID -> Model
|
||||||
updateSelected model id =
|
updateSelected model id =
|
||||||
case model.state of
|
case model.state of
|
||||||
ShowingList list NoMessage ->
|
LoadingList _ ->
|
||||||
{ model | state = ShowingList list (LoadingMessage id) }
|
|
||||||
|
|
||||||
ShowingList list (ShowingMessage visible) ->
|
|
||||||
-- Use Transitioning state to prevent blank message flicker.
|
|
||||||
{ model | state = ShowingList list (Transitioning visible id) }
|
|
||||||
|
|
||||||
ShowingList list (Transitioning visible _) ->
|
|
||||||
{ model | state = ShowingList list (Transitioning visible id) }
|
|
||||||
|
|
||||||
_ ->
|
|
||||||
model
|
model
|
||||||
|
|
||||||
|
ShowingList list messageState ->
|
||||||
|
let
|
||||||
|
newList =
|
||||||
|
{ list | selected = Just id }
|
||||||
|
in
|
||||||
|
case messageState of
|
||||||
|
NoMessage ->
|
||||||
|
{ model | state = ShowingList newList LoadingMessage }
|
||||||
|
|
||||||
|
LoadingMessage ->
|
||||||
|
model
|
||||||
|
|
||||||
|
ShowingMessage visible ->
|
||||||
|
-- Use Transitioning state to prevent blank message flicker.
|
||||||
|
{ model | state = ShowingList newList (Transitioning visible) }
|
||||||
|
|
||||||
|
Transitioning visible ->
|
||||||
|
{ model | state = ShowingList newList (Transitioning visible) }
|
||||||
|
|
||||||
|
|
||||||
updateDeleteMessage : Model -> Message -> ( Model, Cmd Msg, Session.Msg )
|
updateDeleteMessage : Model -> Message -> ( Model, Cmd Msg, Session.Msg )
|
||||||
updateDeleteMessage model message =
|
updateDeleteMessage model message =
|
||||||
@@ -405,17 +420,8 @@ view session model =
|
|||||||
LoadingList _ ->
|
LoadingList _ ->
|
||||||
div [] []
|
div [] []
|
||||||
|
|
||||||
ShowingList list NoMessage ->
|
ShowingList list _ ->
|
||||||
messageList list Nothing
|
messageList list
|
||||||
|
|
||||||
ShowingList list (LoadingMessage id) ->
|
|
||||||
messageList list (Just id)
|
|
||||||
|
|
||||||
ShowingList list (ShowingMessage visible) ->
|
|
||||||
messageList list (Just visible.message.id)
|
|
||||||
|
|
||||||
ShowingList list (Transitioning _ id) ->
|
|
||||||
messageList list (Just id)
|
|
||||||
]
|
]
|
||||||
, main_
|
, main_
|
||||||
[ id "message" ]
|
[ id "message" ]
|
||||||
@@ -429,7 +435,7 @@ view session model =
|
|||||||
ShowingList _ (ShowingMessage { message }) ->
|
ShowingList _ (ShowingMessage { message }) ->
|
||||||
viewMessage message model.bodyMode
|
viewMessage message model.bodyMode
|
||||||
|
|
||||||
ShowingList _ (Transitioning { message } _) ->
|
ShowingList _ (Transitioning { message }) ->
|
||||||
viewMessage message model.bodyMode
|
viewMessage message model.bodyMode
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
@@ -438,13 +444,13 @@ view session model =
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
messageList : MessageList -> Maybe MessageID -> Html Msg
|
messageList : MessageList -> Html Msg
|
||||||
messageList list selected =
|
messageList list =
|
||||||
div []
|
div []
|
||||||
(list
|
(list
|
||||||
|> filterMessageList
|
|> filterMessageList
|
||||||
|> List.reverse
|
|> List.reverse
|
||||||
|> List.map (messageChip selected)
|
|> List.map (messageChip list.selected)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user