aboutsummaryrefslogtreecommitdiffstats
path: root/worker/maildir/worker.go
diff options
context:
space:
mode:
Diffstat (limited to 'worker/maildir/worker.go')
-rw-r--r--worker/maildir/worker.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/worker/maildir/worker.go b/worker/maildir/worker.go
index e482f4e0..e85caacc 100644
--- a/worker/maildir/worker.go
+++ b/worker/maildir/worker.go
@@ -294,6 +294,8 @@ func (w *Worker) handleMessage(msg types.WorkerMessage) error {
return w.handleAnsweredMessages(msg)
case *types.CopyMessages:
return w.handleCopyMessages(msg)
+ case *types.MoveMessages:
+ return w.handleMoveMessages(msg)
case *types.AppendMessage:
return w.handleAppendMessage(msg)
case *types.SearchDirectory:
@@ -655,6 +657,20 @@ func (w *Worker) handleCopyMessages(msg *types.CopyMessages) error {
return nil
}
+func (w *Worker) handleMoveMessages(msg *types.MoveMessages) error {
+ dest := w.c.Dir(msg.Destination)
+ moved, err := w.c.MoveAll(dest, *w.selected, msg.Uids)
+ destInfo := w.getDirectoryInfo(msg.Destination)
+ w.worker.PostMessage(&types.DirectoryInfo{
+ Info: destInfo,
+ }, nil)
+ w.worker.PostMessage(&types.MessagesDeleted{
+ Message: types.RespondTo(msg),
+ Uids: moved,
+ }, nil)
+ return err
+}
+
func (w *Worker) handleAppendMessage(msg *types.AppendMessage) error {
// since we are the "master" maildir process, we can modify the maildir directly
dest := w.c.Dir(msg.Destination)