From 06437e607c4298e2673ef7070bed7a3a50538985 Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Wed, 17 Jul 2024 14:22:51 +0300 Subject: [PATCH] melib/LazyCountSet: set not_yet_seen to 0 when inserting existing Not yet seen behavior is unreliable and leads to false unread counts. Set it to 0 instead when inserting an existing count. Signed-off-by: Manos Pitsidianakis --- melib/src/backends.rs | 16 +++++----------- melib/src/backends/tests.rs | 4 ++-- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/melib/src/backends.rs b/melib/src/backends.rs index 831ee539..15bfa6f5 100644 --- a/melib/src/backends.rs +++ b/melib/src/backends.rs @@ -734,21 +734,13 @@ impl LazyCountSet { } pub fn insert_existing(&mut self, new_val: EnvelopeHash) -> bool { - if self.not_yet_seen == 0 { - false - } else { - if !self.set.contains(&new_val) { - self.not_yet_seen -= 1; - } - self.set.insert(new_val); - true - } + self.not_yet_seen = 0; + self.set.insert(new_val) } pub fn insert_existing_set(&mut self, set: BTreeSet) { - let old_len = self.set.len(); self.set.extend(set); - self.not_yet_seen = self.not_yet_seen.saturating_sub(self.set.len() - old_len); + self.not_yet_seen = 0; } pub fn is_empty(&self) -> bool { @@ -767,10 +759,12 @@ impl LazyCountSet { } pub fn insert_new(&mut self, new_val: EnvelopeHash) { + self.not_yet_seen = 0; self.set.insert(new_val); } pub fn insert_set(&mut self, set: BTreeSet) { + self.not_yet_seen = 0; self.set.extend(set); } diff --git a/melib/src/backends/tests.rs b/melib/src/backends/tests.rs index 710bdd84..4ebd57a7 100644 --- a/melib/src/backends/tests.rs +++ b/melib/src/backends/tests.rs @@ -32,6 +32,6 @@ fn test_lazy_count_set() { assert!(new.insert_existing(EnvelopeHash(i))); } assert_eq!(new.len(), 10); - assert!(!new.insert_existing(EnvelopeHash(10))); - assert_eq!(new.len(), 10); + assert!(new.insert_existing(EnvelopeHash(10))); + assert_eq!(new.len(), 11); }