mirror of
https://github.com/chatmail/core.git
synced 2026-04-28 10:56:29 +03:00
Use 0 value for "delete_server_after" default.
Now 0 means "never delete", 1 means "delete at once" and other values indicate the number of seconds after which them message should be deleted from the server. Configuration value interpretation is moved into Context.get_config_delete_server_after() function.
This commit is contained in:
@@ -68,9 +68,12 @@ pub enum Config {
|
||||
/// Timer in seconds after which the message is deleted from the
|
||||
/// server.
|
||||
///
|
||||
/// Equals to -1 by default, which means the message is never
|
||||
/// Equals to 0 by default, which means the message is never
|
||||
/// deleted.
|
||||
#[strum(props(default = "-1"))]
|
||||
///
|
||||
/// Value 1 is treated as "delete at once": messages are deleted
|
||||
/// immediately, without moving to DeltaChat folder.
|
||||
#[strum(props(default = "0"))]
|
||||
DeleteServerAfter,
|
||||
|
||||
SaveMimeHeaders,
|
||||
@@ -136,6 +139,18 @@ impl Context {
|
||||
self.get_config_int(key) != 0
|
||||
}
|
||||
|
||||
/// Gets configured "delete_server_after" value.
|
||||
///
|
||||
/// `None` means never delete the message, `Some(0)` means delete
|
||||
/// at once, `Some(x)` means delete after `x` seconds.
|
||||
pub fn get_config_delete_server_after(&self) -> Option<i64> {
|
||||
match self.get_config_int(Config::DeleteServerAfter) {
|
||||
0 => None,
|
||||
1 => Some(0),
|
||||
x => Some(x as i64),
|
||||
}
|
||||
}
|
||||
|
||||
/// Set the given config key.
|
||||
/// If `None` is passed as a value the value is cleared and set to the default if there is one.
|
||||
pub fn set_config(&self, key: Config, value: Option<&str>) -> crate::sql::Result<()> {
|
||||
|
||||
@@ -204,14 +204,14 @@ pub fn dc_receive_imf(
|
||||
}
|
||||
} else {
|
||||
// Get user-configured server deletion
|
||||
let delete_server_after = context.get_config_int(Config::DeleteServerAfter);
|
||||
let delete_server_after = context.get_config_delete_server_after();
|
||||
|
||||
if delete_server_after != 0 {
|
||||
if delete_server_after != Some(0) {
|
||||
// Move message if we don't delete it immediately.
|
||||
context.do_heuristics_moves(server_folder.as_ref(), insert_msg_id);
|
||||
}
|
||||
|
||||
if delete_server_after >= 0 {
|
||||
if let Some(delete_server_after) = delete_server_after {
|
||||
info!(
|
||||
context,
|
||||
"Scheduling message deletion in {} seconds", delete_server_after
|
||||
|
||||
@@ -1308,9 +1308,9 @@ fn precheck_imf(context: &Context, rfc724_mid: &str, server_folder: &str, server
|
||||
if old_server_folder.is_empty() && old_server_uid == 0 {
|
||||
info!(context, "[move] detected bcc-self {}", rfc724_mid,);
|
||||
|
||||
let delete_server_after = context.get_config_int(Config::DeleteServerAfter);
|
||||
let delete_server_after = context.get_config_delete_server_after();
|
||||
|
||||
if delete_server_after != 0 {
|
||||
if delete_server_after != Some(0) {
|
||||
context.do_heuristics_moves(server_folder.as_ref(), msg_id);
|
||||
job_add(
|
||||
context,
|
||||
@@ -1321,7 +1321,7 @@ fn precheck_imf(context: &Context, rfc724_mid: &str, server_folder: &str, server
|
||||
);
|
||||
}
|
||||
|
||||
if delete_server_after >= 0 {
|
||||
if let Some(delete_server_after) = delete_server_after {
|
||||
info!(
|
||||
context,
|
||||
"Scheduling BCC-self deletion in {} seconds", delete_server_after
|
||||
|
||||
@@ -859,8 +859,11 @@ pub fn job_send_msg(context: &Context, msg_id: MsgId) -> Result<()> {
|
||||
.get_config(Config::ConfiguredAddr)
|
||||
.unwrap_or_default();
|
||||
let lowercase_from = from.to_lowercase();
|
||||
|
||||
// Send BCC to self if it is enabled and we are not going to
|
||||
// delete it immediately.
|
||||
if context.get_config_bool(Config::BccSelf)
|
||||
&& context.get_config_int(Config::DeleteServerAfter) != 0
|
||||
&& context.get_config_delete_server_after() != Some(0)
|
||||
&& !recipients
|
||||
.iter()
|
||||
.any(|x| x.to_lowercase() == lowercase_from)
|
||||
|
||||
Reference in New Issue
Block a user