Fix detection of Trash, Junk, All etc. folders

imap_proto has been updated, so attributes like `\All`,
`\Junk` from RFC 3501 and RFC 6154 are no longer considered
extensions.
This commit is contained in:
link2xt
2022-11-15 23:27:15 +00:00
parent 1c2d4c518e
commit 90d8e0cedc
2 changed files with 15 additions and 9 deletions

View File

@@ -7,6 +7,7 @@
### API-Changes ### API-Changes
### Fixes ### Fixes
- fix detection of "All mail", "Trash", "Junk" etc folders. #3760
## 1.101.0 ## 1.101.0

View File

@@ -1949,15 +1949,20 @@ fn get_folder_meaning_by_name(folder_name: &str) -> FolderMeaning {
fn get_folder_meaning(folder_name: &Name) -> FolderMeaning { fn get_folder_meaning(folder_name: &Name) -> FolderMeaning {
for attr in folder_name.attributes() { for attr in folder_name.attributes() {
if let NameAttribute::Extension(ref label) = attr { match attr {
match label.as_ref() { NameAttribute::Trash => return FolderMeaning::Other,
"\\Trash" => return FolderMeaning::Other, NameAttribute::Sent => return FolderMeaning::Sent,
"\\Sent" => return FolderMeaning::Sent, NameAttribute::Junk => return FolderMeaning::Spam,
"\\Spam" | "\\Junk" => return FolderMeaning::Spam, NameAttribute::Drafts => return FolderMeaning::Drafts,
"\\Drafts" => return FolderMeaning::Drafts, NameAttribute::All | NameAttribute::Flagged => return FolderMeaning::Virtual,
"\\All" | "\\Important" | "\\Flagged" => return FolderMeaning::Virtual, NameAttribute::Extension(ref label) => {
_ => {} match label.as_ref() {
}; "\\Spam" => return FolderMeaning::Spam,
"\\Important" => return FolderMeaning::Virtual,
_ => {}
};
}
_ => {}
} }
} }
FolderMeaning::Unknown FolderMeaning::Unknown