browse: fix duplicate mail display

This commit is contained in:
FliegendeWurst 2021-04-25 20:32:53 +02:00 committed by Arne Keller
parent 0f25f11410
commit c54f42adf5

View File

@ -92,16 +92,16 @@ fn show_listing(mailbox: &str) -> Result<()> {
for i in 0..mails.len() { for i in 0..mails.len() {
let mail = &*mails[i]; let mail = &*mails[i];
for value in mail.get_header_values("In-Reply-To") { for value in mail.get_header_values("In-Reply-To") {
for mid in value.split(' ').map(ToOwned::to_owned) { for mid in value.split(' ') {
if let Some(other_mail) = mails_by_id.get(&mid) { if let Some(other_mail) = mails_by_id.get(mid) {
graph.add_edge(nodes[other_mail], nodes[mail], ()); graph.add_edge(nodes[other_mail], nodes[mail], ());
} else { } else {
let pseudomail = Box::leak(Box::new(EasyMail::new_pseudo(mid.clone()))); let pseudomail = Box::leak(Box::new(EasyMail::new_pseudo(mid.to_owned())));
let node = graph.add_node(pseudomail); let node = graph.add_node(pseudomail);
nodes.insert(pseudomail, node); nodes.insert(pseudomail, node);
nodes_inv.insert(node, pseudomail); nodes_inv.insert(node, pseudomail);
graph.add_edge(node, nodes[mail], ()); graph.add_edge(node, nodes[mail], ());
mails_by_id.insert(mid, pseudomail); mails_by_id.insert(mid.to_owned(), pseudomail);
} }
} }
} }
@ -127,10 +127,9 @@ fn show_listing(mailbox: &str) -> Result<()> {
} }
let print_thread = |this: &PrintThread, node, placement, parent| { let print_thread = |this: &PrintThread, node, placement, parent| {
let mail = nodes_inv[&node]; let mail = nodes_inv[&node];
if mails_printed.borrow().contains(mail) && placement == Placement::After { if mails_printed.borrow().contains(&mail) { // TODO: placement == Placement::After ?
return; return;
} }
//println!("{}{}", " ".repeat(depth), mail.subject);
let entry = tree.borrow_mut().insert_item(mail, placement, parent); let entry = tree.borrow_mut().insert_item(mail, placement, parent);
mails_printed.borrow_mut().insert(mail); mails_printed.borrow_mut().insert(mail);
let mut replies = graph.neighbors_directed(node, EdgeDirection::Outgoing).collect_vec(); let mut replies = graph.neighbors_directed(node, EdgeDirection::Outgoing).collect_vec();