From d1770290fa0018255adac8cb0a08048ffab1991d Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 27 Sep 2026 19:57:06 +0200 Subject: [PATCH] Added single account direct device search --- .../eu/faircode/email/FragmentMessages.java | 38 +++++++++++++++++-- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index dfe3cfe925..1e7a2f24e2 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -7017,9 +7017,41 @@ public class FragmentMessages extends FragmentBase args.putLong("folder", folder); args.putString("type", type); - FragmentDialogSearch fragment = new FragmentDialogSearch(); - fragment.setArguments(args); - fragment.show(getParentFragmentManager(), "search"); + new SimpleTask() { + @Override + protected Void onExecute(Context context, Bundle args) throws Throwable { + if (args.getLong("account", -1L) < 0 && + args.getLong("folder", -1L) < 0 && + args.getString("type") == null) { + DB db = DB.getInstance(context); + List accounts = db.account().getSynchronizingAccounts(EntityAccount.TYPE_IMAP); + if (accounts != null && accounts.size() == 1) { + EntityAccount account = accounts.get(0); + EntityFolder folder = db.folder().getFolderByType(account.id, + account.isGmail() ? EntityFolder.ARCHIVE : EntityFolder.INBOX); + if (folder != null) { + args.putLong("account", account.id); + args.putLong("folder", folder.id); + args.putString("type", folder.type); + } + } + } + return null; + } + + @Override + protected void onExecuted(Bundle args, Void data) { + FragmentDialogSearch fragment = new FragmentDialogSearch(); + fragment.setArguments(args); + fragment.show(getParentFragmentManager(), "search"); + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Log.e(ex); + onExecuted(args, null); + } + }.execute(this, args, "single.search"); } private void onMenuSaveSearch() {