]> git.r.bdr.sh - rbdr/olden-mail/blobdiff - src/middleware/find_mailboxes_compatibility.rs
Read the tag
[rbdr/olden-mail] / src / middleware / find_mailboxes_compatibility.rs
index ddc12f1181c2fd154a600940354a119a744d27ad..edf5f0694ef5876e6b58f8a1c5aa47ee3b4682de 100644 (file)
@@ -1,5 +1,3 @@
-use log::debug;
-
 use super::Middleware;
 
 /// `MailDrop` can't find folders to sync because it implements `IMAPv3` and
 use super::Middleware;
 
 /// `MailDrop` can't find folders to sync because it implements `IMAPv3` and
@@ -24,11 +22,6 @@ impl Middleware for FindMailboxesCompatibility {
                 // We'll need to convert the LIST to a FIND
                 self.tags.push(tag.trim().to_string());
                 let replacement = format!("{} LIST \"\" \"*\"\r\n", tag.trim());
                 // We'll need to convert the LIST to a FIND
                 self.tags.push(tag.trim().to_string());
                 let replacement = format!("{} LIST \"\" \"*\"\r\n", tag.trim());
-                let debug_str = replacement
-                    .replace('\n', "\\n")
-                    .replace('\r', "\\r")
-                    .replace('\t', "\\t");
-                debug!("### {debug_str}");
                 return replacement.into_bytes();
             }
         }
                 return replacement.into_bytes();
             }
         }
@@ -57,9 +50,15 @@ impl Middleware for FindMailboxesCompatibility {
 
                 // Transform IMAPv4 "* LIST" lines to IMAPv3 "* MAILBOX"
                 if line.starts_with("* LIST") {
 
                 // 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 {mailbox_name}\r"));
+                    if let Some(last_slash_pos) = line.rfind("\"/\"") {
+                        let mailbox_name = line[(last_slash_pos + 3)..].replace('"', "");
+                        return Some(format!("* MAILBOX {}\r", mailbox_name.trim()));
+                    }
+                }
+
+                if line.contains("OK") {
+                    if let Some(tag) = command.split("OK").next() {
+                        return Some(format!("{} OK MAILBOX Completed.\r", tag.trim()).to_string());
                     }
                 }
 
                     }
                 }
 
@@ -67,13 +66,6 @@ impl Middleware for FindMailboxesCompatibility {
             })
             .collect();
 
             })
             .collect();
 
-        let replacement = lines.join("\n");
-        let debug_str = replacement
-            .replace('\n', "\\n")
-            .replace('\r', "\\r")
-            .replace('\t', "\\t");
-        debug!("### {debug_str}");
-
-        replacement.into_bytes()
+        lines.join("\n").into_bytes()
     }
 }
     }
 }