summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManos Pitsidianakis <el13635@mail.ntua.gr>2019-06-19 19:39:40 +0300
committerManos Pitsidianakis <el13635@mail.ntua.gr>2019-06-19 19:40:15 +0300
commit04fc510ea83dde6f6182aa34d2c33a01877d097c (patch)
treea8c3ec1412175f04ca1e06c10867cb7c8c06169a
parent06862c1484fbfbe18c2323066437d79b0cb465b1 (diff)
meli: insert new standalone nodes in insert_reply
-rw-r--r--melib/src/thread.rs19
-rw-r--r--ui/src/conf/accounts.rs3
2 files changed, 21 insertions, 1 deletions
diff --git a/melib/src/thread.rs b/melib/src/thread.rs
index 8934fadc..c0e87cb9 100644
--- a/melib/src/thread.rs
+++ b/melib/src/thread.rs
@@ -1028,6 +1028,25 @@ impl Threads {
self.rebuild_thread(reply_to_id, envelopes);
true
} else {
+ let new_id = ThreadHash::new();
+ self.thread_nodes.insert(
+ new_id,
+ ThreadNode {
+ message: Some(env_hash),
+ parent: None,
+ date: envelopes[&env_hash].date(),
+ ..ThreadNode::new(new_id)
+ },
+ );
+ self.message_ids
+ .insert(envelopes[&env_hash].message_id().raw().to_vec(), new_id);
+ self.message_ids_set
+ .insert(envelopes[&env_hash].message_id().raw().to_vec().to_vec());
+ self.missing_message_ids
+ .remove(envelopes[&env_hash].message_id().raw());
+ envelopes.get_mut(&env_hash).unwrap().set_thread(new_id);
+ self.hash_set.insert(env_hash);
+ self.rebuild_thread(new_id, envelopes);
false
}
/*
diff --git a/ui/src/conf/accounts.rs b/ui/src/conf/accounts.rs
index 52cc9a24..4fe63497 100644
--- a/ui/src/conf/accounts.rs
+++ b/ui/src/conf/accounts.rs
@@ -315,7 +315,6 @@ impl Account {
let env_hash = envelope.hash();
let mailbox = mailbox!(&folder_hash, self.folders);
mailbox.insert(env_hash);
- self.collection.insert(*envelope, folder_hash);
if self
.sent_folder
.as_ref()
@@ -323,6 +322,8 @@ impl Account {
.unwrap_or(false)
{
self.collection.insert_reply(env_hash);
+ } else {
+ self.collection.insert(*envelope, folder_hash);
}
let ref_folders: FnvHashMap<FolderHash, Folder> = self.backend.folders();