diff --git a/src/chat.rs b/src/chat.rs index 11c391097..80b70904c 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -287,7 +287,7 @@ impl ChatId { fn maybe_delete_draft(self, context: &Context) -> bool { match self.get_draft_msg_id(context) { Some(msg_id) => { - Message::delete_from_db(context, msg_id); + msg_id.delete_from_db(context); true } None => false, diff --git a/src/job.rs b/src/job.rs index 684457823..2fb2174bc 100644 --- a/src/job.rs +++ b/src/job.rs @@ -473,7 +473,7 @@ impl Job { } } } - Message::delete_from_db(context, msg.id); + msg.id.delete_from_db(context); Status::Finished(Ok(())) } else { /* eg. device messages have no Message-ID */ diff --git a/src/message.rs b/src/message.rs index 359e399a3..6dbe05665 100644 --- a/src/message.rs +++ b/src/message.rs @@ -99,6 +99,24 @@ impl MsgId { ) } + /// Deletes a message and corresponding MDNs from the database. + pub fn delete_from_db(self, context: &Context) { + sql::execute( + context, + &context.sql, + "DELETE FROM msgs WHERE id=?;", + params![self], + ) + .ok(); + sql::execute( + context, + &context.sql, + "DELETE FROM msgs_mdns WHERE msg_id=?;", + params![self], + ) + .ok(); + } + /// Bad evil escape hatch. /// /// Avoid using this, eventually types should be cleaned up enough @@ -319,25 +337,6 @@ impl Message { .map_err(Into::into) } - pub fn delete_from_db(context: &Context, msg_id: MsgId) { - if let Ok(msg) = Message::load_from_db(context, msg_id) { - sql::execute( - context, - &context.sql, - "DELETE FROM msgs WHERE id=?;", - params![msg.id], - ) - .ok(); - sql::execute( - context, - &context.sql, - "DELETE FROM msgs_mdns WHERE msg_id=?;", - params![msg.id], - ) - .ok(); - } - } - pub fn get_filemime(&self) -> Option { if let Some(m) = self.param.get(Param::MimeType) { return Some(m.to_string());