mirror of
https://github.com/chatmail/core.git
synced 2026-04-29 03:16:29 +03:00
feat: decide_chat_assignment: Log correct post_msg_exists value
rfc724_mid_exists() returns the message id not only when the message is fully downloaded, so we need to check this additionally. Also improve test_receive_pre_message to check that receiving the pre-message again doesn't affect the existing message.
This commit is contained in:
@@ -1313,8 +1313,9 @@ async fn decide_chat_assignment(
|
|||||||
..
|
..
|
||||||
} = &mime_parser.pre_message
|
} = &mime_parser.pre_message
|
||||||
{
|
{
|
||||||
let msg_id = rfc724_mid_exists(context, post_msg_rfc724_mid).await?;
|
let post_msg_exists = if let Some((msg_id, not_downloaded)) =
|
||||||
if let Some(msg_id) = msg_id {
|
message::rfc724_mid_exists_ex(context, post_msg_rfc724_mid, "download_state<>0").await?
|
||||||
|
{
|
||||||
context
|
context
|
||||||
.sql
|
.sql
|
||||||
.execute(
|
.execute(
|
||||||
@@ -1322,8 +1323,10 @@ async fn decide_chat_assignment(
|
|||||||
(rfc724_mid, msg_id),
|
(rfc724_mid, msg_id),
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
}
|
!not_downloaded
|
||||||
let post_msg_exists = msg_id.is_some();
|
} else {
|
||||||
|
false
|
||||||
|
};
|
||||||
info!(
|
info!(
|
||||||
context,
|
context,
|
||||||
"Message {rfc724_mid} is a pre-message for {post_msg_rfc724_mid} (post_msg_exists:{post_msg_exists})."
|
"Message {rfc724_mid} is a pre-message for {post_msg_rfc724_mid} (post_msg_exists:{post_msg_exists})."
|
||||||
|
|||||||
@@ -118,7 +118,13 @@ async fn test_receive_pre_message() -> Result<()> {
|
|||||||
let msg = bob.recv_msg(&pre_message).await;
|
let msg = bob.recv_msg(&pre_message).await;
|
||||||
assert_eq!(msg.download_state, DownloadState::Available);
|
assert_eq!(msg.download_state, DownloadState::Available);
|
||||||
assert_summary_texts(&msg, bob, "👤 test").await;
|
assert_summary_texts(&msg, bob, "👤 test").await;
|
||||||
|
let chat_id = msg.chat_id;
|
||||||
|
|
||||||
|
assert!(bob.recv_msg_opt(&pre_message).await.is_none());
|
||||||
|
let msg = Message::load_from_db(bob, msg.id).await?;
|
||||||
|
assert_eq!(msg.download_state, DownloadState::Available);
|
||||||
|
assert_summary_texts(&msg, bob, "👤 test").await;
|
||||||
|
assert_eq!(msg.chat_id, chat_id);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user