diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java index 8e86afbfd8..e6bb0de442 100644 --- a/app/src/main/java/eu/faircode/email/ActivityView.java +++ b/app/src/main/java/eu/faircode/email/ActivityView.java @@ -317,33 +317,6 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB } private void init() { - if ("primary".equals(startup)) { - new SimpleTask() { - @Override - protected EntityAccount onExecute(Context context, Bundle args) { - DB db = DB.getInstance(context); - return db.account().getPrimaryAccount(); - } - - @Override - protected void onExecuted(Bundle args, EntityAccount account) { - Bundle aargs = new Bundle(); - aargs.putLong("account", account == null ? -1 : account.id); - aargs.putBoolean("primary", true); - FragmentBase fragment = new FragmentFolders(); - fragment.setArguments(aargs); - init(fragment); - } - - @Override - protected void onException(Bundle args, Throwable ex) { - Log.unexpectedError(getSupportFragmentManager(), ex); - } - }.execute(this, new Bundle(), "view:primary"); - - return; - } - Bundle args = new Bundle(); FragmentBase fragment; @@ -355,15 +328,16 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB case "folders": fragment = new FragmentFolders(); break; + case "primary": + fragment = new FragmentFolders(); + args.putBoolean("primary", true); + break; default: fragment = new FragmentMessages(); } fragment.setArguments(args); - init(fragment); - } - private void init(FragmentBase fragment) { FragmentManager fm = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fm.beginTransaction(); for (Fragment existing : fm.getFragments()) diff --git a/app/src/main/java/eu/faircode/email/DaoFolder.java b/app/src/main/java/eu/faircode/email/DaoFolder.java index bad00bd1a8..c363587291 100644 --- a/app/src/main/java/eu/faircode/email/DaoFolder.java +++ b/app/src/main/java/eu/faircode/email/DaoFolder.java @@ -80,16 +80,18 @@ public interface DaoFolder { ", COUNT(DISTINCT CASE WHEN NOT message.ui_seen AND NOT message.ui_hide THEN message.id ELSE NULL END) AS unseen" + ", COUNT(DISTINCT CASE WHEN operation.state = 'executing' THEN operation.id ELSE NULL END) AS executing" + " FROM folder" + - " LEFT JOIN account ON account.id = folder.account" + + " JOIN account ON account.id = folder.account" + " LEFT JOIN message ON message.folder = folder.id" + " LEFT JOIN rule ON rule.folder = folder.id" + " LEFT JOIN operation ON operation.folder = folder.id" + - " WHERE CASE WHEN :account IS NULL" + - " THEN folder.unified AND account.synchronize" + - " ELSE folder.account = :account AND account.synchronize" + + " WHERE CASE WHEN :primary THEN account.`primary` ELSE" + + " CASE WHEN :account IS NULL" + + " THEN folder.unified AND account.synchronize" + + " ELSE folder.account = :account AND account.synchronize" + + " END" + " END" + " GROUP BY folder.id") - LiveData> liveFolders(Long account); + LiveData> liveFolders(Long account, boolean primary); @Query("SELECT folder.*" + ", account.id AS accountId, account.pop AS accountProtocol, account.`order` AS accountOrder" + diff --git a/app/src/main/java/eu/faircode/email/FragmentFolders.java b/app/src/main/java/eu/faircode/email/FragmentFolders.java index 4b16eb53cc..2bd78de2c9 100644 --- a/app/src/main/java/eu/faircode/email/FragmentFolders.java +++ b/app/src/main/java/eu/faircode/email/FragmentFolders.java @@ -306,7 +306,7 @@ public class FragmentFolders extends FragmentBase { }); // Observe folders - db.folder().liveFolders(account < 0 ? null : account).observe(getViewLifecycleOwner(), new Observer>() { + db.folder().liveFolders(account < 0 ? null : account, primary).observe(getViewLifecycleOwner(), new Observer>() { @Override public void onChanged(@Nullable List folders) { if (folders == null) {