diff --git a/src/config.rs b/src/config.rs index 8f510130d..9443dbd62 100644 --- a/src/config.rs +++ b/src/config.rs @@ -18,7 +18,7 @@ use crate::context::Context; use crate::events::EventType; use crate::log::LogExt; use crate::mimefactory::RECOMMENDED_FILE_SIZE; -use crate::provider::{Provider, get_provider_by_id}; +use crate::provider::Provider; use crate::sync::{self, Sync::*, SyncData}; use crate::tools::get_abs_path; use crate::transport::ConfiguredLoginParam; @@ -646,15 +646,14 @@ impl Context { Ok(val) } - /// Gets the configured provider, as saved in the `configured_provider` value. + /// Gets the configured provider. /// - /// The provider is determined by `get_provider_info()` during configuration and then saved - /// to the db in `param.save_to_database()`, together with all the other `configured_*` values. + /// The provider is determined by the current primary transport. pub async fn get_configured_provider(&self) -> Result> { - if let Some(cfg) = self.get_config(Config::ConfiguredProvider).await? { - return Ok(get_provider_by_id(&cfg)); - } - Ok(None) + let provider = ConfiguredLoginParam::load(self) + .await? + .and_then(|(_transport_id, param)| param.provider); + Ok(provider) } /// Gets configured "delete_device_after" value. diff --git a/src/test_utils.rs b/src/test_utils.rs index 5e543903f..f1e3e9eec 100644 --- a/src/test_utils.rs +++ b/src/test_utils.rs @@ -33,6 +33,7 @@ use crate::context::Context; use crate::events::{Event, EventEmitter, EventType, Events}; use crate::key::{self, DcKey, DcSecretKey, self_fingerprint}; use crate::log::warn; +use crate::login_param::EnteredLoginParam; use crate::message::{Message, MessageState, MsgId, update_msg_state}; use crate::mimeparser::{MimeMessage, SystemMessage}; use crate::pgp::KeyPair; @@ -200,6 +201,18 @@ impl TestContextManager { "{} changes her self address and reconfigures", test_context.name() )); + + // Insert a transport for the new address. + test_context.sql + .execute( + "INSERT OR IGNORE INTO transports (addr, entered_param, configured_param) VALUES (?, ?, ?)", + ( + new_addr, + serde_json::to_string(&EnteredLoginParam::default()).unwrap(), + format!(r#"{{"addr":"{new_addr}","imap":[],"imap_user":"","imap_password":"","smtp":[],"smtp_user":"","smtp_password":"","certificate_checks":"Automatic","oauth2":false}}"#) + ), + ).await.unwrap(); + test_context.set_primary_self_addr(new_addr).await.unwrap(); // ensure_secret_key_exists() is called during configure crate::e2ee::ensure_secret_key_exists(test_context)