imap: expunge folder before IDLE if needed

This ensures Inbox is expunged timely in setups that don't watch
DeltaChat folder.
This commit is contained in:
Alexander Krotov
2020-07-12 19:01:35 +03:00
committed by link2xt
parent d3eb209d27
commit 1e84e81e7d
3 changed files with 16 additions and 5 deletions

View File

@@ -51,6 +51,14 @@ impl Imap {
Ok(())
}
/// Issues a CLOSE command if selected folder needs expunge.
pub(crate) async fn maybe_close_folder(&mut self, context: &Context) -> Result<()> {
if self.config.selected_folder_needs_expunge {
self.close_folder(context).await?;
}
Ok(())
}
/// select a folder, possibly update uid_validity and, if needed,
/// expunge the folder to remove delete-marked messages.
pub(super) async fn select_folder<S: AsRef<str>>(
@@ -76,10 +84,7 @@ impl Imap {
}
// deselect existing folder, if needed (it's also done implicitly by SELECT, however, without EXPUNGE then)
let needs_expunge = { self.config.selected_folder_needs_expunge };
if needs_expunge {
self.close_folder(context).await?;
}
self.maybe_close_folder(context).await?;
// select new folder
if let Some(ref folder) = folder {