diff --git a/app/src/main/java/eu/faircode/email/DaoFolder.java b/app/src/main/java/eu/faircode/email/DaoFolder.java index 802546e8b8..32ef300c8c 100644 --- a/app/src/main/java/eu/faircode/email/DaoFolder.java +++ b/app/src/main/java/eu/faircode/email/DaoFolder.java @@ -52,7 +52,8 @@ public interface DaoFolder { EntityFolder getBrowsableFolder(long folder, boolean search); @Query("SELECT folder.*" + - ", account.name AS accountName, account.color AS accountColor, account.state AS accountState" + + ", account.name AS accountName, account.color AS accountColor" + + ", account.state AS accountState, account.error AS accountError" + ", COUNT(message.id) AS messages" + ", SUM(CASE WHEN message.content = 1 THEN 1 ELSE 0 END) AS content" + ", SUM(CASE WHEN message.ui_seen = 0 THEN 1 ELSE 0 END) AS unseen" + @@ -67,7 +68,8 @@ public interface DaoFolder { LiveData> liveFolders(Long account); @Query("SELECT folder.*" + - ", account.name AS accountName, account.color AS accountColor, account.state AS accountState" + + ", account.name AS accountName, account.color AS accountColor" + + ", account.state AS accountState, account.error AS accountError" + ", COUNT(message.id) AS messages" + ", SUM(CASE WHEN message.content = 1 THEN 1 ELSE 0 END) AS content" + ", SUM(CASE WHEN message.ui_seen = 0 THEN 1 ELSE 0 END) AS unseen" + @@ -85,7 +87,8 @@ public interface DaoFolder { LiveData livePrimaryDrafts(); @Query("SELECT folder.*" + - ", account.name AS accountName, account.color AS accountColor, account.state AS accountState" + + ", account.name AS accountName, account.color AS accountColor" + + ", account.state AS accountState, account.error AS accountError" + ", COUNT(message.id) AS messages" + ", SUM(CASE WHEN message.content = 1 THEN 1 ELSE 0 END) AS content" + ", SUM(CASE WHEN message.ui_seen = 0 THEN 1 ELSE 0 END) AS unseen" + diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 00fea32d4b..b47284d3af 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -1521,7 +1521,7 @@ public class FragmentMessages extends FragmentBase { boolean errors = false; for (TupleFolderEx folder : folders) { unseen += folder.unseen; - if (!TextUtils.isEmpty(folder.error)) + if (folder.error != null || folder.accountError != null) errors = true; } @@ -1543,8 +1543,7 @@ public class FragmentMessages extends FragmentBase { rvMessage.scrollToPosition(0); } - if (errors && - !refreshing && swipeRefresh.isRefreshing()) + if (errors && !refreshing && swipeRefresh.isRefreshing()) Snackbar.make(view, R.string.title_sync_errors, Snackbar.LENGTH_LONG).show(); swipeRefresh.setRefreshing(refreshing); @@ -1580,9 +1579,11 @@ public class FragmentMessages extends FragmentBase { rvMessage.scrollToPosition(0); } - if (folder != null && !TextUtils.isEmpty(folder.error) && - !refreshing && swipeRefresh.isRefreshing()) - Snackbar.make(view, folder.error, Snackbar.LENGTH_LONG).show(); + String error = null; + if (folder != null) + error = (folder.error == null ? folder.accountError : folder.error); + if (error != null && !refreshing && swipeRefresh.isRefreshing()) + Snackbar.make(view, error, Snackbar.LENGTH_LONG).show(); swipeRefresh.setRefreshing(refreshing); } diff --git a/app/src/main/java/eu/faircode/email/TupleFolderEx.java b/app/src/main/java/eu/faircode/email/TupleFolderEx.java index a201ea2988..ad5146b466 100644 --- a/app/src/main/java/eu/faircode/email/TupleFolderEx.java +++ b/app/src/main/java/eu/faircode/email/TupleFolderEx.java @@ -25,6 +25,7 @@ public class TupleFolderEx extends EntityFolder { public String accountName; public Integer accountColor; public String accountState; + public String accountError; public int messages; public int content; public int unseen; @@ -37,6 +38,7 @@ public class TupleFolderEx extends EntityFolder { Objects.equals(accountName, other.accountName) && Objects.equals(this.accountColor, other.accountColor) && Objects.equals(accountState, other.accountState) && + Objects.equals(accountError, other.accountError) && this.messages == other.messages && this.content == other.content && this.unseen == other.unseen);