mirror of
https://github.com/chatmail/core.git
synced 2026-05-06 06:46:35 +03:00
Delete info messages on delete requets
When receiving a delete request for webxdcs, delete the associated info messages
This commit is contained in:
@@ -33,7 +33,8 @@ use crate::log::LogExt;
|
|||||||
use crate::log::{info, warn};
|
use crate::log::{info, warn};
|
||||||
use crate::logged_debug_assert;
|
use crate::logged_debug_assert;
|
||||||
use crate::message::{
|
use crate::message::{
|
||||||
self, Message, MessageState, MessengerMessage, MsgId, Viewtype, rfc724_mid_exists,
|
self, Message, MessageState, MessengerMessage, MsgId, Viewtype, get_webxdc_info_messages,
|
||||||
|
rfc724_mid_exists,
|
||||||
};
|
};
|
||||||
use crate::mimeparser::{AvatarAction, MimeMessage, SystemMessage, parse_message_ids};
|
use crate::mimeparser::{AvatarAction, MimeMessage, SystemMessage, parse_message_ids};
|
||||||
use crate::param::{Param, Params};
|
use crate::param::{Param, Params};
|
||||||
@@ -2295,12 +2296,18 @@ async fn handle_edit_delete(
|
|||||||
let mut modified_chat_ids = HashSet::new();
|
let mut modified_chat_ids = HashSet::new();
|
||||||
let mut msg_ids = Vec::new();
|
let mut msg_ids = Vec::new();
|
||||||
|
|
||||||
|
let mut deleted_info_msgs = vec![];
|
||||||
let rfc724_mid_vec: Vec<&str> = rfc724_mid_list.split_whitespace().collect();
|
let rfc724_mid_vec: Vec<&str> = rfc724_mid_list.split_whitespace().collect();
|
||||||
for rfc724_mid in rfc724_mid_vec {
|
for rfc724_mid in rfc724_mid_vec {
|
||||||
if let Some((msg_id, _)) =
|
if let Some((msg_id, _)) =
|
||||||
message::rfc724_mid_exists(context, rfc724_mid).await?
|
message::rfc724_mid_exists(context, rfc724_mid).await?
|
||||||
{
|
{
|
||||||
if let Some(msg) = Message::load_from_db_optional(context, msg_id).await? {
|
if let Some(msg) = Message::load_from_db_optional(context, msg_id).await? {
|
||||||
|
if msg.viewtype == Viewtype::Webxdc {
|
||||||
|
let info_msgs = get_webxdc_info_messages(context, &msg).await?;
|
||||||
|
deleted_info_msgs.extend(&info_msgs);
|
||||||
|
}
|
||||||
|
|
||||||
if msg.from_id == from_id {
|
if msg.from_id == from_id {
|
||||||
message::delete_msg_locally(context, &msg).await?;
|
message::delete_msg_locally(context, &msg).await?;
|
||||||
msg_ids.push(msg.id);
|
msg_ids.push(msg.id);
|
||||||
@@ -2315,6 +2322,15 @@ async fn handle_edit_delete(
|
|||||||
warn!(context, "Delete message: {rfc724_mid:?} not found.");
|
warn!(context, "Delete message: {rfc724_mid:?} not found.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if !deleted_info_msgs.is_empty() {
|
||||||
|
message::delete_msgs(context, &deleted_info_msgs).await?;
|
||||||
|
for msg_id in deleted_info_msgs {
|
||||||
|
if let Some(msg) = Message::load_from_db_optional(context, msg_id).await? {
|
||||||
|
message::delete_msg_locally(context, &msg).await?;
|
||||||
|
msg_ids.push(msg.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
message::delete_msgs_locally_done(context, &msg_ids, modified_chat_ids).await?;
|
message::delete_msgs_locally_done(context, &msg_ids, modified_chat_ids).await?;
|
||||||
} else {
|
} else {
|
||||||
warn!(context, "Delete message: Not encrypted.");
|
warn!(context, "Delete message: Not encrypted.");
|
||||||
|
|||||||
Reference in New Issue
Block a user