diff --git a/app/src/main/java/eu/faircode/email/DaoFolder.java b/app/src/main/java/eu/faircode/email/DaoFolder.java index 2024e77441..0e12ba7915 100644 --- a/app/src/main/java/eu/faircode/email/DaoFolder.java +++ b/app/src/main/java/eu/faircode/email/DaoFolder.java @@ -39,6 +39,9 @@ public interface DaoFolder { " ORDER BY CASE WHEN folder.type = '" + EntityFolder.USER + "' THEN 1 ELSE 0 END") List getFolders(long account, boolean synchronize); + @Query("SELECT * FROM folder WHERE unified") + List getUnifiedFolders(); + @Query("SELECT * FROM folder" + " WHERE account = :account" + " AND type = '" + EntityFolder.USER + "'") diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 311857d983..7621a0d7ca 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -202,17 +202,23 @@ public class FragmentMessages extends FragmentEx { @Override public void onRefresh() { Bundle args = new Bundle(); - args.putLong("id", folder); + args.putLong("account", account); + args.putLong("folder", folder); new SimpleTask() { @Override protected Void onLoad(Context context, Bundle args) { - long id = args.getLong("id"); + long account = args.getLong("account"); + long folder = args.getLong("folder"); DB db = DB.getInstance(context); try { db.beginTransaction(); - EntityOperation.sync(db, id); + if (account < 0) { + for (EntityFolder unified : db.folder().getUnifiedFolders()) + EntityOperation.sync(db, unified.id); + } else + EntityOperation.sync(db, folder); db.setTransactionSuccessful(); } finally { @@ -1006,7 +1012,7 @@ public class FragmentMessages extends FragmentEx { ((ActivityBase) getActivity()).addBackPressedListener(onBackPressedListener); // Initialize - swipeRefresh.setEnabled(viewType == AdapterMessage.ViewType.FOLDER); + swipeRefresh.setEnabled(viewType == AdapterMessage.ViewType.UNIFIED || viewType == AdapterMessage.ViewType.FOLDER); tvNoEmail.setVisibility(View.GONE); bottom_navigation.setVisibility(View.GONE); grpReady.setVisibility(View.GONE); @@ -1082,6 +1088,14 @@ public class FragmentMessages extends FragmentEx { setSubtitle(getString(R.string.title_folder_unseen, name, unseen)); else setSubtitle(name); + + boolean refreshing = false; + for (TupleFolderEx folder : folders) + if (folder.sync_state != null) { + refreshing = true; + break; + } + swipeRefresh.setRefreshing(refreshing); } }); break;