From db7e88ba7bbc0290f5eaa8b6b9f01beb697f737c Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 12 Sep 2021 08:14:33 +0200 Subject: [PATCH] Auto ignore type specific --- app/src/main/java/eu/faircode/email/DaoMessage.java | 10 +++++++--- .../main/java/eu/faircode/email/FragmentMessages.java | 5 ++++- app/src/main/java/eu/faircode/email/ServiceUI.java | 4 ++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/DaoMessage.java b/app/src/main/java/eu/faircode/email/DaoMessage.java index 3e0c0dbc54..e624c99edb 100644 --- a/app/src/main/java/eu/faircode/email/DaoMessage.java +++ b/app/src/main/java/eu/faircode/email/DaoMessage.java @@ -787,12 +787,16 @@ public interface DaoMessage { " AND account IN (" + " SELECT id FROM account" + " WHERE :folder IS NOT NULL" + + " OR :type IS NOT NULL" + " OR id = :account" + - " OR (:account IS NULL AND NOT account.notify))" + + " OR (:account IS NULL AND NOT notify))" + " AND folder IN (" + " SELECT id FROM folder" + - " WHERE (:folder IS NULL AND folder.unified) OR id = :folder)") - int ignoreAll(Long account, Long folder); + " WHERE notify" + + " AND (id = :folder" + + " OR (type = :type AND type <> '" + EntityFolder.OUTBOX + "')" + + " OR (:folder IS NULL AND :type IS NULL AND unified)))") + int ignoreAll(Long account, Long folder, String type); @Query("UPDATE message SET ui_found = 1 WHERE id = :id AND NOT (ui_found IS 1)") int setMessageFound(long id); diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index c1c5864b2a..17c25630a9 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -4078,16 +4078,19 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. if (notify_clear) { Bundle args = new Bundle(); args.putLong("folder", folder); + args.putString("type", type); new SimpleTask() { @Override protected Void onExecute(Context context, Bundle args) { Long folder = args.getLong("folder"); + String type = args.getString("type"); + if (folder < 0) folder = null; DB db = DB.getInstance(context); - db.message().ignoreAll(null, folder); + db.message().ignoreAll(null, folder, type); return null; } diff --git a/app/src/main/java/eu/faircode/email/ServiceUI.java b/app/src/main/java/eu/faircode/email/ServiceUI.java index ff02da6c2e..e148a10480 100644 --- a/app/src/main/java/eu/faircode/email/ServiceUI.java +++ b/app/src/main/java/eu/faircode/email/ServiceUI.java @@ -191,9 +191,9 @@ public class ServiceUI extends IntentService { DB db = DB.getInstance(this); int cleared; if (group < 0) - cleared = db.message().ignoreAll(null, -group); + cleared = db.message().ignoreAll(null, -group, null); else - cleared = db.message().ignoreAll(group == 0 ? null : group, null); + cleared = db.message().ignoreAll(group == 0 ? null : group, null, null); EntityLog.log(this, EntityLog.Type.Notification, "Notify clear group=" + group + " cleared=" + cleared); }