From 57933f65ab456fc4ac81423422b6686801e08c9e Mon Sep 17 00:00:00 2001 From: Tim Culverhouse Date: Tue, 16 Aug 2022 16:23:38 -0500 Subject: [PATCH] mbox: implement MoveMessages handling Implement MoveMessages handling in the mbox backend. The mbox backend exists entirely in memory, so the handling is equivalent to a copy-and-delete. Signed-off-by: Tim Culverhouse Acked-by: Robin Jarry --- worker/mbox/worker.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/worker/mbox/worker.go b/worker/mbox/worker.go index 71da816..067147e 100644 --- a/worker/mbox/worker.go +++ b/worker/mbox/worker.go @@ -295,6 +295,24 @@ func (w *mboxWorker) handleMessage(msg types.WorkerMessage) error { w.worker.PostMessage( &types.Done{Message: types.RespondTo(msg)}, nil) + case *types.MoveMessages: + err := w.data.Copy(msg.Destination, w.name, msg.Uids) + if err != nil { + reterr = err + break + } + deleted := w.folder.Delete(msg.Uids) + if len(deleted) > 0 { + w.worker.PostMessage(&types.MessagesDeleted{ + Message: types.RespondTo(msg), + Uids: deleted, + }, nil) + } + w.worker.PostMessage(&types.DirectoryInfo{ + Info: w.data.DirectoryInfo(msg.Destination), + }, nil) + w.worker.PostMessage( + &types.Done{Message: types.RespondTo(msg)}, nil) case *types.SearchDirectory: uids, err := filterUids(w.folder, w.folder.Uids(), msg.Argv)