diff --git a/README.md b/README.md index ef1b97f..1e46f27 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,7 @@ Subjects are fetched lazily in parallel via `postcat` as the list loads; a progr | `↑↓` / `Space` / `PgUp` / `PgDn` | Scroll | | `H` | Toggle full headers / short headers | | `s` | Save raw EML to `~/QUEUEID.eml` | +| `D` | Delete message (`postsuper -d`) | | `F` | Requeue message (`postsuper -r`) | | `v` | Browse MIME parts | | `q` | Back to queue list | diff --git a/model.go b/model.go index 1b32c28..fd4aafa 100644 --- a/model.go +++ b/model.go @@ -262,6 +262,11 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { m.refreshViewport() m.viewport.GotoTop() return m, nil + case "D": + id := m.currentID + m.state = stateList + m.saveNotice = "" + return m, deleteMessageCmd(id) case "F": return m, requeueMessageCmd(m.currentID) case "v": @@ -394,7 +399,7 @@ func (m Model) View() string { headersHint = "H: short headers" } status := statusBarStyle.Render( - fmt.Sprintf(" ↑↓/SPC/PgUp/Dn: scroll │ s: save EML │ F: requeue │ v: parts │ %s │ q: back │ %d%% ", headersHint, scrollPct), + fmt.Sprintf(" ↑↓/SPC/PgUp/Dn: scroll │ s: save EML │ D: delete │ F: requeue │ v: parts │ %s │ q: back │ %d%% ", headersHint, scrollPct), ) notice := "" if m.messageSaving { diff --git a/msgs.go b/msgs.go index 00ef356..1780287 100644 --- a/msgs.go +++ b/msgs.go @@ -47,6 +47,13 @@ func flushQueueCmd() tea.Cmd { } } +func deleteMessageCmd(id string) tea.Cmd { + return func() tea.Msg { + exec.Command("postsuper", "-d", id).Run() + return nil + } +} + func requeueMessageCmd(id string) tea.Cmd { return func() tea.Msg { exec.Command("postsuper", "-r", id).Run()