diff --git a/src/context.rs b/src/context.rs index f6ee01a66..c9c90b2cf 100644 --- a/src/context.rs +++ b/src/context.rs @@ -484,8 +484,10 @@ impl Context { }; if quota_needs_update { - if let Err(err) = self.update_recent_quota(&mut connection).await { - warn!(self, "Failed to update quota: {err:#}."); + if let Some(session) = connection.session.as_mut() { + if let Err(err) = self.update_recent_quota(session).await { + warn!(self, "Failed to update quota: {err:#}."); + } } } diff --git a/src/quota.rs b/src/quota.rs index 8469f6a69..45e929d7a 100644 --- a/src/quota.rs +++ b/src/quota.rs @@ -10,7 +10,6 @@ use crate::config::Config; use crate::context::Context; use crate::imap::scan_folders::get_watched_folders; use crate::imap::session::Session as ImapSession; -use crate::imap::Imap; use crate::message::{Message, Viewtype}; use crate::tools; use crate::{stock_str, EventType}; @@ -111,13 +110,7 @@ impl Context { /// As the message is added only once, the user is not spammed /// in case for some providers the quota is always at ~100% /// and new space is allocated as needed. - pub(crate) async fn update_recent_quota(&self, imap: &mut Imap) -> Result<()> { - if let Err(err) = imap.prepare(self).await { - warn!(self, "could not connect: {:#}", err); - return Ok(()); - } - - let session = imap.session.as_mut().context("no session")?; + pub(crate) async fn update_recent_quota(&self, session: &mut ImapSession) -> Result<()> { let quota = if session.can_check_quota() { let folders = get_watched_folders(self).await?; get_unique_quota_roots_and_usage(session, folders).await diff --git a/src/scheduler.rs b/src/scheduler.rs index 3c558e3fb..8d51ecc13 100644 --- a/src/scheduler.rs +++ b/src/scheduler.rs @@ -408,8 +408,10 @@ async fn inbox_loop( }; if quota_needs_update { - if let Err(err) = ctx.update_recent_quota(&mut connection).await { - warn!(ctx, "Failed to update quota: {:#}.", err); + if let Some(session) = connection.session.as_mut() { + if let Err(err) = ctx.update_recent_quota(session).await { + warn!(ctx, "Failed to update quota: {:#}.", err); + } } } }