fix: deletion (#41)

drew created

Change summary

fetcher/fetcher.go | 29 +++++++++++++++++++++--------
1 file changed, 21 insertions(+), 8 deletions(-)

Detailed changes

fetcher/fetcher.go 🔗

@@ -266,14 +266,27 @@ func moveEmail(cfg *config.Config, uid uint32, destMailbox string) error {
 }
 
 func DeleteEmail(cfg *config.Config, uid uint32) error {
-	var trashMailbox string
-	switch cfg.ServiceProvider {
-	case "gmail":
-		trashMailbox = "[Gmail]/Trash"
-	default:
-		trashMailbox = "Trash"
-	}
-	return moveEmail(cfg, uid, trashMailbox)
+    c, err := connect(cfg)
+    if err != nil {
+        return err
+    }
+    defer c.Logout()
+
+    if _, err := c.Select("INBOX", false); err != nil {
+        return err
+    }
+
+    seqSet := new(imap.SeqSet)
+    seqSet.AddNum(uid)
+
+    item := imap.FormatFlagsOp(imap.AddFlags, true)
+    flags := []interface{}{imap.DeletedFlag}
+
+    if err := c.UidStore(seqSet, item, flags, nil); err != nil {
+        return err
+    }
+
+    return c.Expunge(nil)
 }
 
 func ArchiveEmail(cfg *config.Config, uid uint32) error {