Skip to content

Commit d60a960

Browse files
committed
fix: Don't mark message as IMAP-seen if it already exists, but has state < InSeen
The message may not exist on another device.
1 parent ce32799 commit d60a960

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

src/imap.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2248,11 +2248,16 @@ pub(crate) async fn prefetch_should_download(
22482248
message_id: &str,
22492249
mut flags: impl Iterator<Item = Flag<'_>>,
22502250
) -> Result<bool> {
2251-
if message::rfc724_mid_exists(context, message_id)
2252-
.await?
2253-
.is_some()
2251+
if let Some((.., seen)) = message::rfc724_mid_exists_ex(
2252+
context,
2253+
message_id,
2254+
"state>=16", // `InSeen`
2255+
)
2256+
.await?
22542257
{
2255-
markseen_on_imap_table(context, message_id).await?;
2258+
if seen {
2259+
markseen_on_imap_table(context, message_id).await?;
2260+
}
22562261
return Ok(false);
22572262
}
22582263

0 commit comments

Comments
 (0)