From d60a9605ae4a74f1eddb05751680fed88c3d3b93 Mon Sep 17 00:00:00 2001 From: iequidoo Date: Tue, 16 Sep 2025 03:51:07 -0300 Subject: [PATCH] fix: Don't mark message as IMAP-seen if it already exists, but has state < InSeen The message may not exist on another device. --- src/imap.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/imap.rs b/src/imap.rs index d72eee3eb..75b9a8546 100644 --- a/src/imap.rs +++ b/src/imap.rs @@ -2248,11 +2248,16 @@ pub(crate) async fn prefetch_should_download( message_id: &str, mut flags: impl Iterator>, ) -> Result { - 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); }