mirror of https://github.com/M66B/FairEmail.git
Use on demand sync when disabled
This commit is contained in:
parent
1324a364e8
commit
4b8a4b92bc
|
@ -135,7 +135,8 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
|
|||
vwLevel.setLayoutParams(lp);
|
||||
}
|
||||
|
||||
if (folder.sync_state == null || "requested".equals(folder.sync_state)) {
|
||||
if (folder.sync_state == null ||
|
||||
"requested".equals(folder.sync_state) || "manual".equals(folder.sync_state)) {
|
||||
if ("waiting".equals(folder.state))
|
||||
ivState.setImageResource(R.drawable.baseline_hourglass_empty_24);
|
||||
else if ("connected".equals(folder.state))
|
||||
|
@ -145,16 +146,11 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
|
|||
else if ("closing".equals(folder.state))
|
||||
ivState.setImageResource(R.drawable.baseline_close_24);
|
||||
else if (folder.state == null)
|
||||
if ("requested".equals(folder.sync_state))
|
||||
ivState.setImageResource(R.drawable.baseline_hourglass_empty_24);
|
||||
else
|
||||
ivState.setImageResource(R.drawable.baseline_cloud_off_24);
|
||||
ivState.setImageResource(R.drawable.baseline_cloud_off_24);
|
||||
else
|
||||
ivState.setImageResource(android.R.drawable.stat_sys_warning);
|
||||
} else {
|
||||
if ("requested".equals(folder.sync_state))
|
||||
ivState.setImageResource(R.drawable.baseline_hourglass_empty_24);
|
||||
else if ("syncing".equals(folder.sync_state))
|
||||
if ("syncing".equals(folder.sync_state))
|
||||
ivState.setImageResource(R.drawable.baseline_compare_arrows_24);
|
||||
else if ("downloading".equals(folder.sync_state))
|
||||
ivState.setImageResource(R.drawable.baseline_cloud_download_24);
|
||||
|
@ -298,6 +294,9 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
|
|||
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();
|
||||
|
@ -312,7 +311,7 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
|
|||
throw new IllegalArgumentException(context.getString(R.string.title_no_internet));
|
||||
} else {
|
||||
EntityAccount account = db.account().getAccount(aid);
|
||||
if (account.ondemand) {
|
||||
if (account.ondemand || !enabled) {
|
||||
if (internet) {
|
||||
now = true;
|
||||
ServiceUI.sync(context, fid);
|
||||
|
|
|
@ -81,7 +81,7 @@ public interface DaoFolder {
|
|||
", SUM(CASE WHEN message.ui_seen = 0 THEN 1 ELSE 0 END) AS unseen" +
|
||||
" FROM folder" +
|
||||
" JOIN account ON account.id = folder.account" +
|
||||
" JOIN message ON message.folder = folder.id AND NOT message.ui_hide" +
|
||||
" LEFT JOIN message ON message.folder = folder.id AND NOT message.ui_hide" +
|
||||
" WHERE account.`synchronize`" +
|
||||
" AND folder.unified" +
|
||||
" GROUP BY folder.id")
|
||||
|
|
|
@ -228,6 +228,11 @@ public class FragmentFolders extends FragmentBase {
|
|||
args.putLong("account", account);
|
||||
|
||||
new SimpleTask<Boolean>() {
|
||||
@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<EntityFolder> 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<EntityFolder> 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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue