diff options
author | Manos Pitsidianakis <el13635@mail.ntua.gr> | 2019-06-19 19:39:40 +0300 |
---|---|---|
committer | Manos Pitsidianakis <el13635@mail.ntua.gr> | 2019-06-19 19:40:15 +0300 |
commit | 04fc510ea83dde6f6182aa34d2c33a01877d097c (patch) | |
tree | a8c3ec1412175f04ca1e06c10867cb7c8c06169a | |
parent | 06862c1484fbfbe18c2323066437d79b0cb465b1 (diff) |
meli: insert new standalone nodes in insert_reply
-rw-r--r-- | melib/src/thread.rs | 19 | ||||
-rw-r--r-- | ui/src/conf/accounts.rs | 3 |
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(); |