[geary/mjog/search-delete-broken] Application.Controller: Fix deleting conversations from search
- From: Michael Gratton <mjog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary/mjog/search-delete-broken] Application.Controller: Fix deleting conversations from search
- Date: Fri, 13 Mar 2020 05:00:24 +0000 (UTC)
commit 87e2255bb3690e248b1fbf75db2c227e2eb02b31
Author: Michael Gratton <mike vee net>
Date: Fri Mar 13 15:57:20 2020 +1100
Application.Controller: Fix deleting conversations from search
When deleteing messages from the search folder, all most be removed
(not just in-folder) since none of the messages will be in-folder.
src/client/application/application-controller.vala | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
---
diff --git a/src/client/application/application-controller.vala
b/src/client/application/application-controller.vala
index 10de12e0..4893ca56 100644
--- a/src/client/application/application-controller.vala
+++ b/src/client/application/application-controller.vala
@@ -809,9 +809,10 @@ internal class Application.Controller : Geary.BaseObject {
public async void delete_conversations(Geary.FolderSupport.Remove target,
Gee.Collection<Geary.App.Conversation> conversations)
throws GLib.Error {
- yield delete_messages(
- target, conversations, to_in_folder_email_ids(conversations)
- );
+ var messages = target.properties.is_virtual
+ ? to_all_email_ids(conversations)
+ : to_in_folder_email_ids(conversations);
+ yield delete_messages(target, conversations, messages);
}
public async void delete_messages(Geary.FolderSupport.Remove target,
@@ -1586,6 +1587,18 @@ internal class Application.Controller : Geary.BaseObject {
return messages;
}
+ private Gee.Collection<Geary.EmailIdentifier>
+ to_all_email_ids(Gee.Collection<Geary.App.Conversation> conversations) {
+ Gee.Collection<Geary.EmailIdentifier> messages =
+ new Gee.LinkedList<Geary.EmailIdentifier>();
+ foreach (Geary.App.Conversation conversation in conversations) {
+ foreach (Geary.Email email in conversation.get_emails(NONE)) {
+ messages.add(email.id);
+ }
+ }
+ return messages;
+ }
+
private void on_account_available(Geary.AccountInformation info) {
Geary.Account? account = null;
try {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]