diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java index 78a64c1be4..7b12f3903c 100644 --- a/app/src/main/java/eu/faircode/email/ActivityView.java +++ b/app/src/main/java/eu/faircode/email/ActivityView.java @@ -258,7 +258,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB getSupportFragmentManager().addOnBackStackChangedListener(this); - DB.getInstance(this).account().liveAccounts(true, threading).observe(this, new Observer>() { + DB.getInstance(this).account().liveAccountsEx().observe(this, new Observer>() { private List last = new ArrayList<>(); @Override diff --git a/app/src/main/java/eu/faircode/email/DaoAccount.java b/app/src/main/java/eu/faircode/email/DaoAccount.java index 251b93d14b..10db5dd6fd 100644 --- a/app/src/main/java/eu/faircode/email/DaoAccount.java +++ b/app/src/main/java/eu/faircode/email/DaoAccount.java @@ -45,7 +45,7 @@ public interface DaoAccount { LiveData> liveAccounts(boolean synchronize); @Query("SELECT *" + - ", (SELECT COUNT(DISTINCT CASE WHEN :threading THEN message.thread ELSE message.id END)" + + ", (SELECT COUNT(message.id)" + " FROM message" + " JOIN folder ON folder.id = message.folder" + " WHERE message.account = account.id" + @@ -56,8 +56,8 @@ public interface DaoAccount { " AND NOT ui_seen" + " AND NOT ui_hide) AS unseen" + " FROM account" + - " WHERE synchronize = :synchronize") - LiveData> liveAccounts(boolean synchronize, boolean threading); + " WHERE synchronize") + LiveData> liveAccountsEx(); @Query("SELECT * FROM account WHERE id = :id") EntityAccount getAccount(long id); diff --git a/app/src/main/java/eu/faircode/email/DaoMessage.java b/app/src/main/java/eu/faircode/email/DaoMessage.java index 39b0b8dc58..9d0cf2dafe 100644 --- a/app/src/main/java/eu/faircode/email/DaoMessage.java +++ b/app/src/main/java/eu/faircode/email/DaoMessage.java @@ -170,14 +170,15 @@ public interface DaoMessage { " ORDER BY message.received DESC") List getMessageIdsByFolder(Long folder); - @Query("SELECT *" + + @Query("SELECT message.*" + " FROM message" + + " LEFT JOIN account ON account.id = :account" + " WHERE account = :account" + - " AND thread = :thread" + + " AND message.thread = :thread" + " AND (:id IS NULL OR message.id = :id)" + " AND (:folder IS NULL OR message.folder = :folder)" + - " AND NOT uid IS NULL" + - " AND NOT ui_hide") + " AND (NOT message.uid IS NULL OR account.pop)" + + " AND NOT message.ui_hide") List getMessageByThread(long account, String thread, Long id, Long folder); @Query("SELECT * FROM message" + @@ -235,6 +236,7 @@ public interface DaoMessage { " JOIN folder ON folder.id = message.folder" + " WHERE account.`synchronize`" + " AND folder.unified" + + " AND (account.created IS NULL OR message.received > account.created)" + " AND NOT message.ui_seen" + " AND NOT message.ui_hide" + " AND NOT message.ui_ignored" +