mirror of
https://github.com/chatmail/core.git
synced 2026-05-09 01:46:30 +03:00
Fix marking read receipts as seen
If mvbox_move was on and an mdn was received, it was not marked as read. Also remove a confusing log that said that we are adding a markseen job, even if we weren't. As job::save() logs itself, there is no need to log this again.
This commit is contained in:
@@ -970,6 +970,30 @@ class TestOnlineAccount:
|
|||||||
except queue.Empty:
|
except queue.Empty:
|
||||||
pass # mark_seen_messages() has generated events before it returns
|
pass # mark_seen_messages() has generated events before it returns
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("mvbox_move", [True, False])
|
||||||
|
def test_markseen_message_and_mdn(self, acfactory, mvbox_move):
|
||||||
|
# Please only change this test if you are very sure that it will still catch the issues it catches now.
|
||||||
|
# We had so many problems with markseen, if in doubt, rather create another test, it can't harm.
|
||||||
|
ac1 = acfactory.get_online_configuring_account(move=mvbox_move, mvbox=mvbox_move)
|
||||||
|
ac2 = acfactory.get_online_configuring_account(move=mvbox_move, mvbox=mvbox_move)
|
||||||
|
acfactory.wait_configure_and_start_io()
|
||||||
|
|
||||||
|
acfactory.get_accepted_chat(ac1, ac2).send_text("hi")
|
||||||
|
msg = ac2._evtracker.wait_next_incoming_message()
|
||||||
|
|
||||||
|
folder = "mvbox" if mvbox_move else "inbox"
|
||||||
|
ac1.direct_imap.select_config_folder(folder)
|
||||||
|
ac2.direct_imap.select_config_folder(folder)
|
||||||
|
ac1.direct_imap.idle_start()
|
||||||
|
ac2.direct_imap.idle_start()
|
||||||
|
|
||||||
|
ac2.mark_seen_messages([msg])
|
||||||
|
|
||||||
|
ac1.direct_imap.idle_wait_for_seen() # Check that the mdn is marked as seen
|
||||||
|
ac2.direct_imap.idle_wait_for_seen() # Check that the original message is marked as seen
|
||||||
|
ac1.direct_imap.idle_done()
|
||||||
|
ac2.direct_imap.idle_done()
|
||||||
|
|
||||||
def test_reply_privately(self, acfactory):
|
def test_reply_privately(self, acfactory):
|
||||||
ac1, ac2 = acfactory.get_two_online_accounts()
|
ac1, ac2 = acfactory.get_two_online_accounts()
|
||||||
|
|
||||||
|
|||||||
@@ -836,8 +836,8 @@ async fn add_parts(
|
|||||||
|
|
||||||
if is_mdn || is_location_kml {
|
if is_mdn || is_location_kml {
|
||||||
is_hidden = true;
|
is_hidden = true;
|
||||||
if state == MessageState::InFresh {
|
if state == MessageState::InFresh || state == MessageState::InNoticed {
|
||||||
state = MessageState::InNoticed;
|
state = MessageState::InSeen; // Set the state to InSeen so that precheck_imf() adds a markseen job after we moved the message
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1521,6 +1521,7 @@ async fn precheck_imf(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if old_server_folder != server_folder || old_server_uid != server_uid {
|
if old_server_folder != server_folder || old_server_uid != server_uid {
|
||||||
|
info!(context, "Updating server uid");
|
||||||
update_server_uid(context, rfc724_mid, server_folder, server_uid).await;
|
update_server_uid(context, rfc724_mid, server_folder, server_uid).await;
|
||||||
if let Ok(message_state) = msg_id.get_state(context).await {
|
if let Ok(message_state) = msg_id.get_state(context).await {
|
||||||
if message_state == MessageState::InSeen || message_state.is_outgoing() {
|
if message_state == MessageState::InSeen || message_state.is_outgoing() {
|
||||||
@@ -1531,7 +1532,6 @@ async fn precheck_imf(
|
|||||||
.await;
|
.await;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
info!(context, "Updating server_uid and adding markseen job");
|
|
||||||
}
|
}
|
||||||
Ok(true)
|
Ok(true)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user