diff --git a/app/src/main/java/eu/faircode/email/AdapterNavUnified.java b/app/src/main/java/eu/faircode/email/AdapterNavUnified.java index bfdb7900c4..b0dd3f6de1 100644 --- a/app/src/main/java/eu/faircode/email/AdapterNavUnified.java +++ b/app/src/main/java/eu/faircode/email/AdapterNavUnified.java @@ -72,7 +72,7 @@ public class AdapterNavUnified extends RecyclerView.Adapter> liveUnified(); + LiveData> liveUnified(String type); @Query("SELECT folder.*" + ", account.`order` AS accountOrder, account.name AS accountName, account.color AS accountColor" + @@ -158,6 +158,7 @@ public interface DaoFolder { " FROM folder" + " JOIN account ON account.id = folder.account" + " WHERE account.synchronize" + + " AND folder.type <> '" + EntityFolder.SYSTEM + "'" + " AND folder.type <> '" + EntityFolder.USER + "'" + " GROUP BY folder.type" + " HAVING COUNT(folder.id) > 1") diff --git a/app/src/main/java/eu/faircode/email/DaoMessage.java b/app/src/main/java/eu/faircode/email/DaoMessage.java index 773858401a..5a0cc9ae71 100644 --- a/app/src/main/java/eu/faircode/email/DaoMessage.java +++ b/app/src/main/java/eu/faircode/email/DaoMessage.java @@ -172,15 +172,16 @@ public interface DaoMessage { @Query("SELECT message.id FROM folder" + " JOIN message ON message.folder = folder.id" + - " WHERE CASE WHEN :folder IS NULL THEN folder.unified ELSE folder.id = :folder END" + + " WHERE ((:folder IS NULL AND :type IS NULL AND folder.unified)" + + " OR folder.type = :type OR folder.id = :folder)" + " AND ui_hide <> 0") - LiveData> liveHidden(Long folder); + LiveData> liveHiddenFolder(Long folder, String type); @Query("SELECT id FROM message" + " WHERE account = :account" + " AND thread = :thread" + " AND ui_hide <> 0") - LiveData> liveHidden(long account, String thread); + LiveData> liveHiddenThread(long account, String thread); @Query("SELECT *" + " FROM message" + diff --git a/app/src/main/java/eu/faircode/email/EntityFolder.java b/app/src/main/java/eu/faircode/email/EntityFolder.java index bea418441e..7c8161c433 100644 --- a/app/src/main/java/eu/faircode/email/EntityFolder.java +++ b/app/src/main/java/eu/faircode/email/EntityFolder.java @@ -213,6 +213,8 @@ public class EntityFolder extends EntityOrder implements Serializable { return R.drawable.baseline_delete_24; if (EntityFolder.JUNK.equals(type)) return R.drawable.baseline_flag_24; + if (EntityFolder.SYSTEM.equals(type)) + return R.drawable.baseline_folder_special_24; return R.drawable.baseline_folder_24; } diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 61ccf8764c..d381c68c43 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -2050,7 +2050,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. // Folder switch (viewType) { case UNIFIED: - db.folder().liveUnified().observe(getViewLifecycleOwner(), new Observer>() { + db.folder().liveUnified(type).observe(getViewLifecycleOwner(), new Observer>() { @Override public void onChanged(List folders) { if (folders == null) @@ -2059,7 +2059,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. updateState(folders); } }); - db.message().liveHidden(null).observe(getViewLifecycleOwner(), new Observer>() { + db.message().liveHiddenFolder(null, type).observe(getViewLifecycleOwner(), new Observer>() { @Override public void onChanged(List ids) { if (ids != null && selectionTracker != null) @@ -2086,7 +2086,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. } } }); - db.message().liveHidden(folder).observe(getViewLifecycleOwner(), new Observer>() { + db.message().liveHiddenFolder(folder, null).observe(getViewLifecycleOwner(), new Observer>() { @Override public void onChanged(List ids) { if (ids != null && selectionTracker != null) @@ -2115,7 +2115,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. } } }); - db.message().liveHidden(account, thread).observe(getViewLifecycleOwner(), new Observer>() { + db.message().liveHiddenThread(account, thread).observe(getViewLifecycleOwner(), new Observer>() { @Override public void onChanged(List ids) { if (ids != null) {