diff --git a/Changelog.md b/Changelog.md index ecfc80c4..3c871343 100644 --- a/Changelog.md +++ b/Changelog.md @@ -11,6 +11,7 @@ Changelog [format](http://keepachangelog.com/en/1.0.0/) ### Changed * GODT-225 Do not send an EXISTS reposnse after EXPUNGE or when nothing changed (fixes rebuild of mailboxes in Outlook for Mac) * GODT-165 Optimization of RebuildMailboxes +* GODT-282 Completely delete old draft instead moving to trash when user updates draft * Adding DSN Sentry as build time parameter * GODT-124 bump go-appdir from v1.0.0 to v1.1.0 diff --git a/internal/store/mailbox_message.go b/internal/store/mailbox_message.go index 4e13c88c..aacf79be 100644 --- a/internal/store/mailbox_message.go +++ b/internal/store/mailbox_message.go @@ -206,6 +206,10 @@ func (storeMailbox *Mailbox) DeleteMessages(apiIDs []string) error { return err } } + case pmapi.DraftLabel: + if err := storeMailbox.api().DeleteMessages(apiIDs); err != nil { + return err + } default: if err := storeMailbox.api().UnlabelMessages(apiIDs, storeMailbox.labelID); err != nil { return err @@ -266,7 +270,7 @@ func (storeMailbox *Mailbox) txCreateOrUpdateMessages(tx *bolt.Tx, msgs []*pmapi // Draft bodies can change and bodies are not re-fetched by IMAP clients. // Every change has to be a new message; we need to delete the old one and always recreate it. - if storeMailbox.labelID == pmapi.DraftLabel { + if msg.Type == pmapi.MessageTypeDraft { if err := storeMailbox.txDeleteMessage(tx, msg.ID); err != nil { return errors.Wrap(err, "cannot delete old draft") }