]> git.r.bdr.sh - rbdr/olden-mail/blobdiff - src/middleware/find_mailboxes_compatibility.rs
Remove quotes
[rbdr/olden-mail] / src / middleware / find_mailboxes_compatibility.rs
index a1ddda20358d23c444e8db6513fb376058fb9937..a9318f9b9e4e6d2d478a9c54b56194b309410815 100644 (file)
@@ -1,9 +1,7 @@
-use log::debug;
-
 use super::Middleware;
 
-/// `MailDrop` can't find folders to sync because it implements IMAPv3 and
-/// sends FIND MAILBOXES /*, which does not exist in IMAPv4.
+/// `MailDrop` can't find folders to sync because it implements `IMAPv3` and
+/// sends FIND MAILBOXES /*, which does not exist in `IMAPv4`.
 /// which is not understood by modern servers. It instead replaces it with
 /// a LIST command.
 pub struct FindMailboxesCompatibility {
@@ -22,9 +20,8 @@ impl Middleware for FindMailboxesCompatibility {
         if command.contains("FIND MAILBOXES /*") {
             if let Some(tag) = command.split("FIND MAILBOXES /*").next() {
                 // We'll need to convert the LIST to a FIND
-                self.tags.push(tag.to_string());
+                self.tags.push(tag.trim().to_string());
                 let replacement = format!("{} LIST \"\" \"*\"\r\n", tag.trim());
-                debug!("### {replacement}");
                 return replacement.into_bytes();
             }
         }
@@ -36,7 +33,7 @@ impl Middleware for FindMailboxesCompatibility {
         let contains_ok_completed = self
             .tags
             .iter()
-            .any(|tag| command.contains(&format!("{} OK Completed", tag)));
+            .any(|tag| command.contains(&format!("{tag} OK Completed")));
 
         // We want to only modify responses that were a result of a MAILBOX call.
         if !contains_ok_completed {
@@ -54,15 +51,17 @@ impl Middleware for FindMailboxesCompatibility {
                 // Transform IMAPv4 "* LIST" lines to IMAPv3 "* MAILBOX"
                 if line.starts_with("* LIST") {
                     if let Some(last_slash_pos) = line.rfind('/') {
-                        let mailbox_name = line[(last_slash_pos + 1)..].trim();
-                        return Some(format!("* MAILBOX {}\r", mailbox_name));
+                        let mailbox_name = line[(last_slash_pos + 1)..]
+                            .trim()
+                            .replace('"', "");
+                        return Some(format!("* MAILBOX {mailbox_name}\r"));
                     }
                 }
 
-                return Some(line.to_string());
+                Some(line.to_string())
             })
             .collect();
 
-        return lines.join("\n").into_bytes();
+        lines.join("\n").into_bytes()
     }
 }