From 636459b97ecd05de4097cba09bbd4a988adf8893 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Bellegarde?= Date: Mon, 9 Oct 2023 15:30:41 +0200 Subject: [PATCH] client: conversation-list: Show recipients in Sent folder Fix #669 --- .../conversation-list-row.vala | 40 ++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/src/client/conversation-list/conversation-list-row.vala b/src/client/conversation-list/conversation-list-row.vala index 116c0b6c..d6d231b9 100644 --- a/src/client/conversation-list/conversation-list-row.vala +++ b/src/client/conversation-list/conversation-list-row.vala @@ -148,27 +148,39 @@ internal class ConversationList.Row : Gtk.ListBoxRow { private string get_participants() { var participants = new Gee.ArrayList(); + var addresses = new Geary.RFC822.MailboxAddresses(); Gee.List emails = conversation.get_emails( Geary.App.Conversation.Ordering.RECV_DATE_ASCENDING); - + bool is_outgoing = conversation.base_folder.used_as.is_outgoing(); foreach (Geary.Email message in emails) { - Geary.RFC822.MailboxAddresses? addresses = - conversation.base_folder.used_as.is_outgoing() - ? new Geary.RFC822.MailboxAddresses.single(Util.Email.get_primary_originator(message)) + Geary.RFC822.MailboxAddresses? addrs = + is_outgoing + ? message.to : message.from; + addresses = addresses.merge_list(addrs); + } - if (addresses == null) { - continue; - } - - foreach (Geary.RFC822.MailboxAddress address in addresses) { - Participant participant_display = new Participant(address); - int existing_index = participants.index_of(participant_display); - if (existing_index < 0) { - participants.add(participant_display); - continue; + Gee.List list = Geary.traverse( + addresses.get_all() + ).filter((address) => { + // In sent, we only want to show "Me" + if (is_outgoing && addresses.size > 1) { + foreach (var account in this.user_accounts) { + if (account.equal_to(address)) { + return false; + } } } + return true; + }).to_array_list(); + + foreach (Geary.RFC822.MailboxAddress address in list) { + Participant participant_display = new Participant(address); + int existing_index = participants.index_of(participant_display); + if (existing_index < 0) { + participants.add(participant_display); + continue; + } } if (participants.size == 0) {