From e68b95dd106d7b78eacc88421ba14f3a8a5ce02c Mon Sep 17 00:00:00 2001 From: iequidoo Date: Fri, 10 Oct 2025 02:52:06 -0300 Subject: [PATCH] fix: is_configured(): Ensure that public key exists when returning true We don't want configured accounts w/o a public key. The self-color depends on it. --- src/configure.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/configure.rs b/src/configure.rs index 31d81200b..223e31c9e 100644 --- a/src/configure.rs +++ b/src/configure.rs @@ -27,6 +27,7 @@ use crate::config::{self, Config}; use crate::constants::NON_ALPHANUMERIC_WITHOUT_DOT; use crate::context::Context; use crate::imap::Imap; +use crate::key; use crate::log::{LogExt, info, warn}; pub use crate::login_param::EnteredLoginParam; use crate::login_param::{ @@ -62,7 +63,16 @@ macro_rules! progress { impl Context { /// Checks if the context is already configured. pub async fn is_configured(&self) -> Result { - self.sql.exists("SELECT COUNT(*) FROM transports", ()).await + if !self + .sql + .exists("SELECT COUNT(*) FROM transports", ()) + .await? + { + return Ok(false); + } + // We don't want configured accounts w/o a public key. The self-color depends on it. + key::load_self_public_key(self).await?; + Ok(true) } /// Configures this account with the currently provided parameters.