mirror of
https://github.com/chatmail/core.git
synced 2026-05-08 09:26:29 +03:00
Improve sentbox name guessing
This commit is contained in:
@@ -1246,7 +1246,9 @@ impl Imap {
|
|||||||
} else if let FolderMeaning::SentObjects = get_folder_meaning(&folder) {
|
} else if let FolderMeaning::SentObjects = get_folder_meaning(&folder) {
|
||||||
// Always takes precedent
|
// Always takes precedent
|
||||||
sentbox_folder = Some(folder.name().to_string());
|
sentbox_folder = Some(folder.name().to_string());
|
||||||
} else if let FolderMeaning::SentObjects = get_folder_meaning_by_name(&folder) {
|
} else if let FolderMeaning::SentObjects =
|
||||||
|
get_folder_meaning_by_name(&folder.name())
|
||||||
|
{
|
||||||
// only set iff none has been already set
|
// only set iff none has been already set
|
||||||
if sentbox_folder.is_none() {
|
if sentbox_folder.is_none() {
|
||||||
sentbox_folder = Some(folder.name().to_string());
|
sentbox_folder = Some(folder.name().to_string());
|
||||||
@@ -1325,11 +1327,43 @@ impl Imap {
|
|||||||
// only watching this folder is not working. at least, this is no show stopper.
|
// only watching this folder is not working. at least, this is no show stopper.
|
||||||
// CAVE: if possible, take care not to add a name here that is "sent" in one language
|
// CAVE: if possible, take care not to add a name here that is "sent" in one language
|
||||||
// but sth. different in others - a hard job.
|
// but sth. different in others - a hard job.
|
||||||
fn get_folder_meaning_by_name(folder_name: &Name) -> FolderMeaning {
|
fn get_folder_meaning_by_name(folder_name: &str) -> FolderMeaning {
|
||||||
let sent_names = vec!["sent", "sentmail", "sent objects", "gesendet"];
|
// source: https://stackoverflow.com/questions/2185391/localized-gmail-imap-folders
|
||||||
let lower = folder_name.name().to_lowercase();
|
let sent_names = vec![
|
||||||
|
"sent",
|
||||||
|
"sentmail",
|
||||||
|
"sent objects",
|
||||||
|
"gesendet",
|
||||||
|
"Sent Mail",
|
||||||
|
"Sendte e-mails",
|
||||||
|
"Enviados",
|
||||||
|
"Messages envoyés",
|
||||||
|
"Messages envoyes",
|
||||||
|
"Posta inviata",
|
||||||
|
"Verzonden berichten",
|
||||||
|
"Wyslane",
|
||||||
|
"E-mails enviados",
|
||||||
|
"Correio enviado",
|
||||||
|
"Enviada",
|
||||||
|
"Enviado",
|
||||||
|
"Gönderildi",
|
||||||
|
"Inviati",
|
||||||
|
"Odeslaná pošta",
|
||||||
|
"Sendt",
|
||||||
|
"Skickat",
|
||||||
|
"Verzonden",
|
||||||
|
"Wysłane",
|
||||||
|
"Éléments envoyés",
|
||||||
|
"Απεσταλμένα",
|
||||||
|
"Отправленные",
|
||||||
|
"寄件備份",
|
||||||
|
"已发送邮件",
|
||||||
|
"送信済み",
|
||||||
|
"보낸편지함",
|
||||||
|
];
|
||||||
|
let lower = folder_name.to_lowercase();
|
||||||
|
|
||||||
if sent_names.into_iter().any(|s| s == lower) {
|
if sent_names.into_iter().any(|s| s.to_lowercase() == lower) {
|
||||||
FolderMeaning::SentObjects
|
FolderMeaning::SentObjects
|
||||||
} else {
|
} else {
|
||||||
FolderMeaning::Unknown
|
FolderMeaning::Unknown
|
||||||
@@ -1575,3 +1609,32 @@ async fn message_needs_processing(
|
|||||||
fn get_fallback_folder(delimiter: &str) -> String {
|
fn get_fallback_folder(delimiter: &str) -> String {
|
||||||
format!("INBOX{}DeltaChat", delimiter)
|
format!("INBOX{}DeltaChat", delimiter)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
#[test]
|
||||||
|
fn test_get_folder_meaning_by_name() {
|
||||||
|
assert_eq!(
|
||||||
|
get_folder_meaning_by_name("Gesendet"),
|
||||||
|
FolderMeaning::SentObjects
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
get_folder_meaning_by_name("GESENDET"),
|
||||||
|
FolderMeaning::SentObjects
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
get_folder_meaning_by_name("gesendet"),
|
||||||
|
FolderMeaning::SentObjects
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
get_folder_meaning_by_name("Messages envoyés"),
|
||||||
|
FolderMeaning::SentObjects
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
get_folder_meaning_by_name("mEsSaGes envoyÉs"),
|
||||||
|
FolderMeaning::SentObjects
|
||||||
|
);
|
||||||
|
assert_eq!(get_folder_meaning_by_name("xxx"), FolderMeaning::Unknown);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user