Skip to content

Commit

Permalink
fix: emit MsgsChanged event with correct chat id for replaced messages
Browse files Browse the repository at this point in the history
Previously an event with DC_CHAT_ID_TRASH was emitted.
  • Loading branch information
link2xt committed Jul 28, 2023
1 parent 55aaec7 commit bba6c8f
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 5 deletions.
5 changes: 5 additions & 0 deletions python/tests/test_1_online.py
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,11 @@ def test_webxdc_download_on_demand(acfactory, data, lp):
ac2._evtracker.get_matching("DC_EVENT_WEBXDC_STATUS_UPDATE")
assert msg2.get_status_updates()

# Get a event notifying that the message disappeared from the chat.
msgs_changed_event = ac2._evtracker.get_matching("DC_EVENT_MSGS_CHANGED")
assert msgs_changed_event.data1 == msg2.chat.id
assert msgs_changed_event.data2 == 0


def test_mvbox_sentbox_threads(acfactory, lp):
lp.sec("ac1: start with mvbox thread")
Expand Down
10 changes: 5 additions & 5 deletions src/receive_imf.rs
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ pub(crate) async fn receive_imf_inner(

// check, if the mail is already in our database.
// make sure, this check is done eg. before securejoin-processing.
let replace_partial_download =
let (replace_partial_download, replace_chat_id) =
if let Some(old_msg_id) = message::rfc724_mid_exists(context, rfc724_mid).await? {
let msg = Message::load_from_db(context, old_msg_id).await?;
if msg.download_state() != DownloadState::Done && is_partial_download.is_none() {
Expand All @@ -152,14 +152,14 @@ pub(crate) async fn receive_imf_inner(
context,
"Message already partly in DB, replacing by full message."
);
Some(old_msg_id)
(Some(old_msg_id), Some(msg.chat_id))
} else {
// the message was probably moved around.
info!(context, "Message already in DB, doing nothing.");
return Ok(None);
}
} else {
None
(None, None)
};

let prevent_rename =
Expand Down Expand Up @@ -347,8 +347,8 @@ pub(crate) async fn receive_imf_inner(
}
}

if replace_partial_download.is_some() {
context.emit_msgs_changed(chat_id, MsgId::new(0));
if let Some(replace_chat_id) = replace_chat_id {
context.emit_msgs_changed(replace_chat_id, MsgId::new(0));
} else if !chat_id.is_trash() {
let fresh = received_msg.state == MessageState::InFresh;
for msg_id in &received_msg.msg_ids {
Expand Down

0 comments on commit bba6c8f

Please sign in to comment.