diff --git a/src/config.rs b/src/config.rs index 1641f1953..e65d27c93 100644 --- a/src/config.rs +++ b/src/config.rs @@ -3,7 +3,6 @@ use strum::{EnumProperty, IntoEnumIterator}; use strum_macros::{AsRefStr, Display, EnumIter, EnumProperty, EnumString}; -use crate::blob::BlobObject; use crate::chat::ChatId; use crate::constants::DC_VERSION_STR; use crate::context::Context; @@ -13,6 +12,10 @@ use crate::job; use crate::message::MsgId; use crate::mimefactory::RECOMMENDED_FILE_SIZE; use crate::stock::StockMessage; +use crate::{ + blob::BlobObject, + provider::{get_provider_by_id, Provider}, +}; /// The available configuration keys. #[derive( @@ -212,6 +215,14 @@ impl Context { } } + /// Gets the configured provider, as saved in the `configured_provider` value. + /// + /// 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. + pub async fn get_configured_provider(&self) -> Option<&'static Provider> { + get_provider_by_id(&self.get_config(Config::ConfiguredProvider).await?) + } + /// Gets configured "delete_device_after" value. /// /// `None` means never delete the message, `Some(x)` means delete diff --git a/src/smtp/send.rs b/src/smtp/send.rs index 2b729cec1..eaac4f828 100644 --- a/src/smtp/send.rs +++ b/src/smtp/send.rs @@ -3,11 +3,9 @@ use super::Smtp; use async_smtp::{EmailAddress, Envelope, SendableEmail, Transport}; -use crate::config::Config; use crate::constants::DEFAULT_MAX_SMTP_RCPT_TO; use crate::context::Context; use crate::events::EventType; -use crate::provider::get_provider_by_id; use itertools::Itertools; use std::time::Duration; @@ -38,12 +36,7 @@ impl Smtp { let message_len_bytes = message.len(); let mut chunk_size = DEFAULT_MAX_SMTP_RCPT_TO; - if let Some(provider) = get_provider_by_id( - &context - .get_config(Config::ConfiguredProvider) - .await - .unwrap_or_default(), - ) { + if let Some(provider) = context.get_configured_provider().await { if let Some(max_smtp_rcpt_to) = provider.max_smtp_rcpt_to { chunk_size = max_smtp_rcpt_to as usize; } diff --git a/src/sql.rs b/src/sql.rs index 76f76b328..5630b1587 100644 --- a/src/sql.rs +++ b/src/sql.rs @@ -9,6 +9,7 @@ use std::time::Duration; use rusqlite::{Connection, Error as SqlError, OpenFlags}; +use crate::chat::add_device_msg; use crate::config::Config::DeleteServerAfter; use crate::constants::{ShowEmails, DC_CHAT_ID_TRASH}; use crate::context::Context; @@ -20,7 +21,6 @@ use crate::param::{Param, Params}; use crate::peerstate::Peerstate; use crate::provider::get_provider_by_domain; use crate::stock::StockMessage; -use crate::{chat::add_device_msg, provider::get_provider_by_id}; use crate::{ chat::{update_device_icon, update_saved_messages_icon}, config::Config, @@ -1481,19 +1481,10 @@ CREATE INDEX devmsglabels_index1 ON devmsglabels (label); disable_server_delete = true; // Don't disable server delete if it was on by default (Nauta): - if let Some(provider) = get_provider_by_id( - &context - .get_config(Config::ConfiguredProvider) - .await - .unwrap_or_default(), - ) { + if let Some(provider) = context.get_configured_provider().await { if let Some(defaults) = &provider.config_defaults { - if let Some(config) = - defaults.iter().find(|d| d.key == Config::DeleteServerAfter) - { - if config.value == "1" { - disable_server_delete = false; - } + if defaults.iter().any(|d| d.key == Config::DeleteServerAfter) { + disable_server_delete = false; } } }