diff --git a/ui/src/Page/Mailbox.elm b/ui/src/Page/Mailbox.elm index f8e079b..ebd7ead 100644 --- a/ui/src/Page/Mailbox.elm +++ b/ui/src/Page/Mailbox.elm @@ -116,6 +116,8 @@ type Msg | MessageResult (Result Http.Error Message) | MessageBody Body | OpenedTime Time + | Purge + | PurgeResult (Result Http.Error ()) | SearchInput String | Tick Time | ViewMessage MessageID @@ -213,6 +215,15 @@ update session msg model = _ -> ( model, Cmd.none, Session.none ) + Purge -> + updatePurge model + + PurgeResult (Ok _) -> + ( model, Cmd.none, Session.none ) + + PurgeResult (Err err) -> + ( model, Cmd.none, Session.SetFlash (HttpUtil.errorString err) ) + Tick now -> case model.state of ShowingList _ (ShowingMessage { message, markSeenAt }) -> @@ -258,6 +269,26 @@ updateMessageResult model message = ) +updatePurge : Model -> ( Model, Cmd Msg, Session.Msg ) +updatePurge model = + let + cmd = + "/api/v1/mailbox/" + ++ model.mailboxName + |> HttpUtil.delete + |> Http.send PurgeResult + in + case model.state of + ShowingList list _ -> + ( { model | state = ShowingList (MessageList [] Nothing "") NoMessage } + , cmd + , Session.none + ) + + _ -> + ( model, cmd, Session.none ) + + updateSearchInput : Model -> String -> ( Model, Cmd Msg, Session.Msg ) updateSearchInput model searchInput = let @@ -439,6 +470,7 @@ viewMessageList session model = , value model.searchInput ] [] + , button [ onClick Purge ] [ text "Purge" ] ] , case model.state of LoadingList _ ->