From 4b8a4b92bc03aa387bc7b8d524d3bf21ceeeef27 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 28 Feb 2019 12:35:19 +0000 Subject: [PATCH] Use on demand sync when disabled --- .../java/eu/faircode/email/AdapterFolder.java | 17 ++++++++--------- .../main/java/eu/faircode/email/DaoFolder.java | 2 +- .../java/eu/faircode/email/FragmentFolders.java | 17 +++++++++++------ .../eu/faircode/email/FragmentMessages.java | 5 ++++- .../main/java/eu/faircode/email/ServiceUI.java | 3 ++- .../java/eu/faircode/email/TupleFolderEx.java | 3 ++- 6 files changed, 28 insertions(+), 19 deletions(-) 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