fake_idle: unwrap watch_folder early to avoid doing it in a loop

This also makes info message "IMAP-fake-IDLEing folder=..." nicer,
because the folder name is not wrapped into Some() anymore.
This commit is contained in:
link2xt
2021-02-03 23:14:48 +03:00
committed by link2xt
parent b0a3a0046c
commit dc893bf5cd

View File

@@ -125,10 +125,12 @@ impl Imap {
let fake_idle_start_time = SystemTime::now();
// Do not poll, just wait for an interrupt when no folder is passed in.
if watch_folder.is_none() {
let watch_folder = if let Some(watch_folder) = watch_folder {
watch_folder
} else {
info!(context, "IMAP-fake-IDLE: no folder, waiting for interrupt");
return self.idle_interrupt.recv().await.unwrap_or_default();
}
};
info!(context, "IMAP-fake-IDLEing folder={:?}", watch_folder);
// check every minute if there are new messages
@@ -170,19 +172,17 @@ impl Imap {
// will have already fetched the messages so perform_*_fetch
// will not find any new.
if let Some(ref watch_folder) = watch_folder {
match self.fetch_new_messages(context, watch_folder, false).await {
Ok(res) => {
info!(context, "fetch_new_messages returned {:?}", res);
if res {
break InterruptInfo::new(false, None);
}
}
Err(err) => {
error!(context, "could not fetch from folder: {:#}", err);
self.trigger_reconnect()
match self.fetch_new_messages(context, &watch_folder, false).await {
Ok(res) => {
info!(context, "fetch_new_messages returned {:?}", res);
if res {
break InterruptInfo::new(false, None);
}
}
Err(err) => {
error!(context, "could not fetch from folder: {:#}", err);
self.trigger_reconnect()
}
}
}
Event::Interrupt(info) => {