fix: Don't mark message as IMAP-seen if it already exists, but has state < InSeen

The message may not exist on another device.
This commit is contained in:
iequidoo
2025-09-16 03:51:07 -03:00
parent ce32799f87
commit d60a9605ae

View File

@@ -2248,11 +2248,16 @@ pub(crate) async fn prefetch_should_download(
message_id: &str,
mut flags: impl Iterator<Item = Flag<'_>>,
) -> Result<bool> {
if message::rfc724_mid_exists(context, message_id)
.await?
.is_some()
if let Some((.., seen)) = message::rfc724_mid_exists_ex(
context,
message_id,
"state>=16", // `InSeen`
)
.await?
{
markseen_on_imap_table(context, message_id).await?;
if seen {
markseen_on_imap_table(context, message_id).await?;
}
return Ok(false);
}