From 6513349c09cf6f2aff513d4e2a82e51163c9ca32 Mon Sep 17 00:00:00 2001 From: iequidoo Date: Tue, 9 Jul 2024 15:52:09 -0300 Subject: [PATCH] feat: Add Config::FixIsChatmail Add a config option preventing autoconfiguring `IsChatmail` for tests. --- src/config.rs | 3 +++ src/configure.rs | 20 ++++++++++++++++---- src/context.rs | 6 ++++++ src/scheduler.rs | 12 +++++++----- 4 files changed, 32 insertions(+), 9 deletions(-) diff --git a/src/config.rs b/src/config.rs index c65309da9..65f0cf012 100644 --- a/src/config.rs +++ b/src/config.rs @@ -257,6 +257,9 @@ pub enum Config { /// True if account is a chatmail account. IsChatmail, + /// True if `IsChatmail` mustn't be autoconfigured. For tests. + FixIsChatmail, + /// True if account is muted. IsMuted, diff --git a/src/configure.rs b/src/configure.rs index efa210ce4..2f6b29deb 100644 --- a/src/configure.rs +++ b/src/configure.rs @@ -454,15 +454,27 @@ async fn configure(ctx: &Context, param: &mut LoginParam) -> Result<()> { progress!(ctx, 900); - if imap_session.is_chatmail() { - ctx.set_config(Config::IsChatmail, Some("1")).await?; + let is_chatmail = match ctx.get_config_bool(Config::FixIsChatmail).await? { + false => { + let is_chatmail = imap_session.is_chatmail(); + ctx.set_config( + Config::IsChatmail, + Some(match is_chatmail { + false => "0", + true => "1", + }), + ) + .await?; + is_chatmail + } + true => ctx.get_config_bool(Config::IsChatmail).await?, + }; + if is_chatmail { ctx.set_config(Config::SentboxWatch, None).await?; ctx.set_config(Config::MvboxMove, Some("0")).await?; ctx.set_config(Config::OnlyFetchMvbox, None).await?; ctx.set_config(Config::ShowEmails, None).await?; ctx.set_config(Config::E2eeEnabled, Some("1")).await?; - } else { - ctx.set_config(Config::IsChatmail, Some("0")).await?; } let create_mvbox = ctx.should_watch_mvbox().await?; diff --git a/src/context.rs b/src/context.rs index a50abcc83..54cf31eb9 100644 --- a/src/context.rs +++ b/src/context.rs @@ -814,6 +814,12 @@ impl Context { } res.insert("is_chatmail", self.is_chatmail().await?.to_string()); + res.insert( + "fix_is_chatmail", + self.get_config_bool(Config::FixIsChatmail) + .await? + .to_string(), + ); res.insert( "is_muted", self.get_config_bool(Config::IsMuted).await?.to_string(), diff --git a/src/scheduler.rs b/src/scheduler.rs index 9aa5b11b8..15147f204 100644 --- a/src/scheduler.rs +++ b/src/scheduler.rs @@ -466,11 +466,13 @@ pub async fn convert_folder_meaning( } async fn inbox_fetch_idle(ctx: &Context, imap: &mut Imap, mut session: Session) -> Result { - ctx.set_config_internal( - Config::IsChatmail, - crate::config::from_bool(session.is_chatmail()), - ) - .await?; + if !ctx.get_config_bool(Config::FixIsChatmail).await? { + ctx.set_config_internal( + Config::IsChatmail, + crate::config::from_bool(session.is_chatmail()), + ) + .await?; + } // Update quota no more than once a minute. if ctx.quota_needs_update(60).await {