diff --git a/app/src/main/java/eu/faircode/email/AdapterFolder.java b/app/src/main/java/eu/faircode/email/AdapterFolder.java index 8bb016bdf1..7f7f4db97b 100644 --- a/app/src/main/java/eu/faircode/email/AdapterFolder.java +++ b/app/src/main/java/eu/faircode/email/AdapterFolder.java @@ -135,7 +135,8 @@ public class AdapterFolder extends RecyclerView.Adapter() { + @Override + protected void onPostExecute(Bundle args) { + swipeRefresh.setRefreshing(false); + } + @Override protected Boolean onExecute(Context context, Bundle args) { long aid = args.getLong("account"); @@ -236,6 +241,9 @@ public class FragmentFolders extends FragmentBase { NetworkInfo ni = cm.getActiveNetworkInfo(); boolean internet = (ni != null && ni.isConnected()); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + boolean enabled = prefs.getBoolean("enabled", true); + DB db = DB.getInstance(context); try { db.beginTransaction(); @@ -248,7 +256,7 @@ public class FragmentFolders extends FragmentBase { List folders = db.folder().getFoldersSynchronizingUnified(); for (EntityFolder folder : folders) { EntityAccount account = db.account().getAccount(folder.account); - if (account.ondemand) + if (account.ondemand || !enabled) if (internet) { now = true; ServiceUI.sync(context, folder.id); @@ -261,7 +269,7 @@ public class FragmentFolders extends FragmentBase { } } else { EntityAccount account = db.account().getAccount(aid); - if (account.ondemand) { + if (account.ondemand || !enabled) { if (internet) { now = true; List folders = db.folder().getFoldersOnDemandSync(aid); @@ -291,15 +299,12 @@ public class FragmentFolders extends FragmentBase { @Override protected void onExecuted(Bundle args, Boolean now) { - if (!now) { - swipeRefresh.setRefreshing(false); + if (!now) Snackbar.make(view, R.string.title_sync_delayed, Snackbar.LENGTH_LONG).show(); - } } @Override protected void onException(Bundle args, Throwable ex) { - swipeRefresh.setRefreshing(false); if (ex instanceof IllegalArgumentException) Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG).show(); else diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index a37855f979..199011b94b 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -496,6 +496,9 @@ public class FragmentMessages extends FragmentBase { NetworkInfo ni = cm.getActiveNetworkInfo(); boolean internet = (ni != null && ni.isConnected()); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + boolean enabled = prefs.getBoolean("enabled", true); + DB db = DB.getInstance(context); try { db.beginTransaction(); @@ -523,7 +526,7 @@ public class FragmentMessages extends FragmentBase { nointernet = true; } else { EntityAccount account = db.account().getAccount(folder.account); - if (account.ondemand) { + if (account.ondemand || !enabled) { if (internet) { now = true; ServiceUI.sync(context, folder.id); diff --git a/app/src/main/java/eu/faircode/email/ServiceUI.java b/app/src/main/java/eu/faircode/email/ServiceUI.java index e2870ff4bf..45a9141568 100644 --- a/app/src/main/java/eu/faircode/email/ServiceUI.java +++ b/app/src/main/java/eu/faircode/email/ServiceUI.java @@ -310,7 +310,8 @@ public class ServiceUI extends IntentService { public static void sync(Context context, long folder) { DB db = DB.getInstance(context); - db.folder().setFolderSyncState(folder, "requested"); + db.folder().setFolderState(folder, "waiting"); + db.folder().setFolderSyncState(folder, "manual"); context.startService( new Intent(context, ServiceUI.class) diff --git a/app/src/main/java/eu/faircode/email/TupleFolderEx.java b/app/src/main/java/eu/faircode/email/TupleFolderEx.java index 7d85296621..542c22e907 100644 --- a/app/src/main/java/eu/faircode/email/TupleFolderEx.java +++ b/app/src/main/java/eu/faircode/email/TupleFolderEx.java @@ -33,7 +33,8 @@ public class TupleFolderEx extends EntityFolder { boolean isSynchronizing() { return (sync_state != null && (EntityFolder.OUTBOX.equals(type) || - accountOnDemand || "connected".equals(accountState))); + !"requested".equals(sync_state) || + "connected".equals(accountState))); } @Override