mirror of
https://github.com/jhillyerd/inbucket.git
synced 2025-12-18 01:57:02 +00:00
file & mem stores should emit delete events on purge (#338)
Signed-off-by: James Hillyerd <james@hillyerd.com>
This commit is contained in:
@@ -11,6 +11,7 @@ import (
|
||||
|
||||
"github.com/inbucket/inbucket/pkg/config"
|
||||
"github.com/inbucket/inbucket/pkg/extension"
|
||||
"github.com/inbucket/inbucket/pkg/message"
|
||||
"github.com/inbucket/inbucket/pkg/storage"
|
||||
"github.com/inbucket/inbucket/pkg/stringutil"
|
||||
"github.com/rs/zerolog/log"
|
||||
@@ -186,6 +187,17 @@ func (fs *Store) PurgeMessages(mailbox string) error {
|
||||
mb := fs.mbox(mailbox)
|
||||
mb.Lock()
|
||||
defer mb.Unlock()
|
||||
|
||||
// Emit delete events.
|
||||
if !mb.indexLoaded {
|
||||
if err := mb.readIndex(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
for _, m := range mb.messages {
|
||||
fs.extHost.Events.AfterMessageDeleted.Emit(message.MakeMetadata(m))
|
||||
}
|
||||
|
||||
return mb.purge()
|
||||
}
|
||||
|
||||
|
||||
@@ -144,16 +144,25 @@ func (s *Store) MarkSeen(mailbox, id string) error {
|
||||
|
||||
// PurgeMessages deletes the contents of a mailbox.
|
||||
func (s *Store) PurgeMessages(mailbox string) error {
|
||||
// Grab lock, copy messages, clear, and drop lock.
|
||||
var messages map[string]*Message
|
||||
s.withMailbox(mailbox, true, func(mb *mbox) {
|
||||
messages = mb.messages
|
||||
mb.messages = make(map[string]*Message)
|
||||
})
|
||||
if len(messages) > 0 && s.remove != nil {
|
||||
|
||||
// Process size/quota.
|
||||
if s.remove != nil {
|
||||
for _, m := range messages {
|
||||
s.enforcerRemove(m)
|
||||
}
|
||||
}
|
||||
|
||||
// Emit delete events.
|
||||
for _, m := range messages {
|
||||
s.extHost.Events.AfterMessageDeleted.Emit(message.MakeMetadata(m))
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user