diff --git a/src/chat.rs b/src/chat.rs index adcf631d6..59bb3bf6a 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -1929,9 +1929,26 @@ pub fn get_chat_id_by_grpid(context: &Context, grpid: impl AsRef) -> (u32, } pub fn add_device_msg(context: &Context, msg: &mut Message) -> Result { + let label = format!("info-{}", dc_create_id()); + add_device_msg_once(context, &label, msg) +} + +pub fn add_device_msg_once( + context: &Context, + label: &str, + msg: &mut Message, +) -> Result { let (chat_id, _blocked) = create_or_lookup_by_contact_id(context, DC_CONTACT_ID_DEVICE, Blocked::Not)?; - let rfc724_mid = dc_create_outgoing_rfc724_mid(None, "@device"); + let rfc724_mid = format!("{}@device", label); + + if let Ok((_, _, msg_id)) = message::rfc724_mid_exists(context, &rfc724_mid) { + info!( + context, + "device-message {} already exist as {}", label, msg_id + ); + return Ok(msg_id); + } prepare_msg_blob(context, msg)?; unarchive(context, chat_id)?; @@ -1955,6 +1972,7 @@ pub fn add_device_msg(context: &Context, msg: &mut Message) -> Result Result<()> { go to the settings and enable \"Send copy to self\"." .to_string(), ); - chat::add_device_msg(context, &mut msg)?; + chat::add_device_msg_once(context, "bcc-self-hint", &mut msg)?; } Ok(()) }