diff --git a/app/src/main/java/eu/faircode/email/AdapterFolder.java b/app/src/main/java/eu/faircode/email/AdapterFolder.java index 8a78775424..dc2999b91b 100644 --- a/app/src/main/java/eu/faircode/email/AdapterFolder.java +++ b/app/src/main/java/eu/faircode/email/AdapterFolder.java @@ -26,8 +26,6 @@ import android.content.SharedPreferences; import android.content.res.ColorStateList; import android.graphics.Color; import android.graphics.Typeface; -import android.net.ConnectivityManager; -import android.net.NetworkInfo; import android.os.Bundle; import android.preference.PreferenceManager; import android.text.TextUtils; @@ -281,60 +279,29 @@ public class AdapterFolder extends RecyclerView.Adapter() { + new SimpleTask() { @Override - protected Boolean onExecute(Context context, Bundle args) { - long aid = args.getLong("account"); + protected Void onExecute(Context context, Bundle args) { long fid = args.getLong("folder"); - ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - NetworkInfo ni = cm.getActiveNetworkInfo(); - boolean internet = (ni != null && ni.isConnected()); - - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - boolean enabled = prefs.getBoolean("enabled", true); + if (!Helper.isConnected(context)) + throw new IllegalArgumentException(context.getString(R.string.title_no_internet)); DB db = DB.getInstance(context); try { db.beginTransaction(); - boolean now; - if (aid < 0) { - // Outbox - if (internet) { - now = true; - EntityOperation.sync(context, fid); - } else - throw new IllegalArgumentException(context.getString(R.string.title_no_internet)); - } else { - EntityAccount account = db.account().getAccount(aid); - if (account.ondemand || !enabled) { - if (internet) { - now = true; - EntityOperation.sync(context, fid); - } else - throw new IllegalArgumentException(context.getString(R.string.title_no_internet)); - } else { - now = "connected".equals(account.state); - EntityOperation.sync(context, fid); - } - } + EntityOperation.sync(context, fid); db.setTransactionSuccessful(); - return now; } finally { db.endTransaction(); } - } - @Override - protected void onExecuted(Bundle args, Boolean now) { - if (!now) - Snackbar.make(itemView, R.string.title_sync_delayed, Snackbar.LENGTH_LONG).show(); + return null; } @Override diff --git a/app/src/main/java/eu/faircode/email/EntityOperation.java b/app/src/main/java/eu/faircode/email/EntityOperation.java index 8a69144820..114535d6ed 100644 --- a/app/src/main/java/eu/faircode/email/EntityOperation.java +++ b/app/src/main/java/eu/faircode/email/EntityOperation.java @@ -115,10 +115,7 @@ public class EntityOperation { operation.created = new Date().getTime(); operation.id = db.operation().insertOperation(operation); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - boolean enabled = prefs.getBoolean("enabled", true); - - if (account != null && (account.ondemand || !enabled)) { + if (account != null && (account.ondemand || !"connected".equals(account.state))) { db.folder().setFolderState(fid, "waiting"); db.folder().setFolderSyncState(fid, "manual"); } else @@ -126,7 +123,7 @@ public class EntityOperation { if (account == null) // Outbox ServiceSend.start(context); - else if (account.ondemand || !enabled) + else if (account.ondemand || !"connected".equals(account.state)) ServiceUI.process(context, fid); Log.i("Queued sync folder=" + folder); diff --git a/app/src/main/java/eu/faircode/email/FragmentFolders.java b/app/src/main/java/eu/faircode/email/FragmentFolders.java index 5fca6e418e..abdffd00f2 100644 --- a/app/src/main/java/eu/faircode/email/FragmentFolders.java +++ b/app/src/main/java/eu/faircode/email/FragmentFolders.java @@ -23,8 +23,6 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Color; -import android.net.ConnectivityManager; -import android.net.NetworkInfo; import android.os.Bundle; import android.preference.PreferenceManager; import android.view.LayoutInflater; @@ -278,78 +276,43 @@ public class FragmentFolders extends FragmentBase { Bundle args = new Bundle(); args.putLong("account", account); - new SimpleTask() { + new SimpleTask() { @Override protected void onPostExecute(Bundle args) { swipeRefresh.setRefreshing(false); } @Override - protected Boolean onExecute(Context context, Bundle args) { + protected Void onExecute(Context context, Bundle args) { long aid = args.getLong("account"); - ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - NetworkInfo ni = cm.getActiveNetworkInfo(); - boolean internet = (ni != null && ni.isConnected()); - - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - boolean enabled = prefs.getBoolean("enabled", true); + if (!Helper.isConnected(context)) + throw new IllegalArgumentException(context.getString(R.string.title_no_internet)); DB db = DB.getInstance(context); try { db.beginTransaction(); - boolean now = false; - boolean nointernet = false; - if (aid < 0) { // Unified inbox List folders = db.folder().getFoldersSynchronizingUnified(); - for (EntityFolder folder : folders) { - EntityAccount account = db.account().getAccount(folder.account); - if (account.ondemand || !enabled) - if (internet) { - now = true; - EntityOperation.sync(context, folder.id); - } else - nointernet = true; - else { - now = "connected".equals(account.state); - EntityOperation.sync(context, folder.id); - } - } + for (EntityFolder folder : folders) + EntityOperation.sync(context, folder.id); } else { + // Folder list EntityAccount account = db.account().getAccount(aid); - if (account.ondemand || !enabled) { - if (internet) { - now = true; - ServiceUI.fsync(context, aid); - } else - nointernet = true; - } else { - if (internet) { - now = true; - ServiceSynchronize.reload(getContext(), "refresh folders"); - } else - nointernet = true; - } + if (account.ondemand) + ServiceUI.fsync(context, aid); + else + ServiceSynchronize.reload(getContext(), "refresh folders"); } db.setTransactionSuccessful(); - - if (nointernet) - throw new IllegalArgumentException(context.getString(R.string.title_no_internet)); - - return now; } finally { db.endTransaction(); } - } - @Override - protected void onExecuted(Bundle args, Boolean now) { - if (!now) - Snackbar.make(view, R.string.title_sync_delayed, Snackbar.LENGTH_LONG).show(); + return null; } @Override diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index f3638ee56c..99e9915157 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -31,7 +31,6 @@ import android.graphics.drawable.Drawable; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; -import android.net.NetworkInfo; import android.net.NetworkRequest; import android.os.Bundle; import android.os.Handler; @@ -492,69 +491,29 @@ public class FragmentMessages extends FragmentBase { protected Boolean onExecute(Context context, Bundle args) { long fid = args.getLong("folder"); - ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - NetworkInfo ni = cm.getActiveNetworkInfo(); - boolean internet = (ni != null && ni.isConnected()); - - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - boolean enabled = prefs.getBoolean("enabled", true); + if (!Helper.isConnected(context)) + throw new IllegalArgumentException(context.getString(R.string.title_no_internet)); DB db = DB.getInstance(context); try { db.beginTransaction(); - List folders = new ArrayList<>(); if (fid < 0) { - List unified = db.folder().getFoldersSynchronizingUnified(); - if (unified != null) - folders.addAll(unified); + List folders = db.folder().getFoldersSynchronizingUnified(); + for (EntityFolder folder : folders) + EntityOperation.sync(context, folder.id); } else { EntityFolder folder = db.folder().getFolder(fid); if (folder != null) - folders.add(folder); + EntityOperation.sync(context, folder.id); } - boolean now = false; - boolean nointernet = false; - for (EntityFolder folder : folders) - if (folder.account == null) { - // Outbox - if (internet) { - now = true; - EntityOperation.sync(context, folder.id); - } else - nointernet = true; - } else { - EntityAccount account = db.account().getAccount(folder.account); - if (account.ondemand || !enabled) { - if (internet) { - now = true; - EntityOperation.sync(context, folder.id); - } else - nointernet = true; - } else { - now = "connected".equals(account.state); - EntityOperation.sync(context, folder.id); - } - } - db.setTransactionSuccessful(); - - if (nointernet) - throw new IllegalArgumentException(context.getString(R.string.title_no_internet)); - - return now; } finally { db.endTransaction(); } - } - @Override - protected void onExecuted(Bundle args, Boolean now) { - if (!now) { - swipeRefresh.setRefreshing(false); - Snackbar.make(view, R.string.title_sync_delayed, Snackbar.LENGTH_LONG).show(); - } + return null; } @Override diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 81c3d5ff48..fca54c82b2 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -695,6 +695,12 @@ public class Helper { return filename.substring(index + 1); } + static boolean isConnected(Context context) { + ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo ni = cm.getActiveNetworkInfo(); + return (ni != null && ni.isConnected()); + } + static Boolean isMetered(Context context, boolean log) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); diff --git a/app/src/main/java/eu/faircode/email/ServiceSend.java b/app/src/main/java/eu/faircode/email/ServiceSend.java index a7db04737f..2451c74835 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSend.java +++ b/app/src/main/java/eu/faircode/email/ServiceSend.java @@ -26,7 +26,6 @@ import android.content.Intent; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; -import android.net.NetworkInfo; import android.net.NetworkRequest; import android.os.PowerManager; import android.text.TextUtils; @@ -139,23 +138,17 @@ public class ServiceSend extends LifecycleService { @Override public void onAvailable(Network network) { Log.i("Service send available=" + network); - if (isConnected()) + if (Helper.isConnected(ServiceSend.this)) run(); } @Override public void onCapabilitiesChanged(Network network, NetworkCapabilities caps) { Log.i("Service send caps=" + caps); - if (isConnected()) + if (Helper.isConnected(ServiceSend.this)) run(); } - private boolean isConnected() { - ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); - NetworkInfo ni = cm.getActiveNetworkInfo(); - return (ni != null && ni.isConnected()); - } - private void run() { if (thread != null && thread.isAlive()) return; @@ -218,7 +211,7 @@ public class ServiceSend extends LifecycleService { Log.i(outbox.name + " end op=" + op.id + "/" + op.name); } - if (!isConnected()) + if (!Helper.isConnected(ServiceSend.this)) break; } diff --git a/app/src/main/java/eu/faircode/email/ViewModelBrowse.java b/app/src/main/java/eu/faircode/email/ViewModelBrowse.java index c67e4b328d..6638fd1ea2 100644 --- a/app/src/main/java/eu/faircode/email/ViewModelBrowse.java +++ b/app/src/main/java/eu/faircode/email/ViewModelBrowse.java @@ -21,8 +21,6 @@ package eu.faircode.email; import android.content.Context; import android.content.SharedPreferences; -import android.net.ConnectivityManager; -import android.net.NetworkInfo; import android.preference.PreferenceManager; import com.sun.mail.iap.Argument; @@ -159,10 +157,7 @@ public class ViewModelBrowse extends ViewModel { try { // Check connectivity - ConnectivityManager cm = (ConnectivityManager) state.context.getSystemService(Context.CONNECTIVITY_SERVICE); - NetworkInfo ni = cm.getActiveNetworkInfo(); - boolean internet = (ni != null && ni.isConnected()); - if (!internet) + if (!Helper.isConnected(state.context)) throw new IllegalArgumentException(state.context.getString(R.string.title_no_internet)); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(state.context); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 93c5f90374..1d70607128 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -256,7 +256,6 @@ This provider does not support UIDPLUS This provider does not support UTF-8 Synchronization errors since %1$s - Synchronization will be performed on the next account connection A drafts folder is required to send messages Delete this account permanently? Delete this identity permanently?