Use on demand sync when disabled

pull/152/head
M66B 6 years ago
parent 1324a364e8
commit 4b8a4b92bc

@ -135,7 +135,8 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
vwLevel.setLayoutParams(lp); 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)) if ("waiting".equals(folder.state))
ivState.setImageResource(R.drawable.baseline_hourglass_empty_24); ivState.setImageResource(R.drawable.baseline_hourglass_empty_24);
else if ("connected".equals(folder.state)) else if ("connected".equals(folder.state))
@ -145,16 +146,11 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
else if ("closing".equals(folder.state)) else if ("closing".equals(folder.state))
ivState.setImageResource(R.drawable.baseline_close_24); ivState.setImageResource(R.drawable.baseline_close_24);
else if (folder.state == null) else if (folder.state == null)
if ("requested".equals(folder.sync_state)) ivState.setImageResource(R.drawable.baseline_cloud_off_24);
ivState.setImageResource(R.drawable.baseline_hourglass_empty_24);
else
ivState.setImageResource(R.drawable.baseline_cloud_off_24);
else else
ivState.setImageResource(android.R.drawable.stat_sys_warning); ivState.setImageResource(android.R.drawable.stat_sys_warning);
} else { } else {
if ("requested".equals(folder.sync_state)) if ("syncing".equals(folder.sync_state))
ivState.setImageResource(R.drawable.baseline_hourglass_empty_24);
else if ("syncing".equals(folder.sync_state))
ivState.setImageResource(R.drawable.baseline_compare_arrows_24); ivState.setImageResource(R.drawable.baseline_compare_arrows_24);
else if ("downloading".equals(folder.sync_state)) else if ("downloading".equals(folder.sync_state))
ivState.setImageResource(R.drawable.baseline_cloud_download_24); ivState.setImageResource(R.drawable.baseline_cloud_download_24);
@ -298,6 +294,9 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
NetworkInfo ni = cm.getActiveNetworkInfo(); NetworkInfo ni = cm.getActiveNetworkInfo();
boolean internet = (ni != null && ni.isConnected()); boolean internet = (ni != null && ni.isConnected());
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean enabled = prefs.getBoolean("enabled", true);
DB db = DB.getInstance(context); DB db = DB.getInstance(context);
try { try {
db.beginTransaction(); db.beginTransaction();
@ -312,7 +311,7 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
throw new IllegalArgumentException(context.getString(R.string.title_no_internet)); throw new IllegalArgumentException(context.getString(R.string.title_no_internet));
} else { } else {
EntityAccount account = db.account().getAccount(aid); EntityAccount account = db.account().getAccount(aid);
if (account.ondemand) { if (account.ondemand || !enabled) {
if (internet) { if (internet) {
now = true; now = true;
ServiceUI.sync(context, fid); 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" + ", SUM(CASE WHEN message.ui_seen = 0 THEN 1 ELSE 0 END) AS unseen" +
" FROM folder" + " FROM folder" +
" JOIN account ON account.id = folder.account" + " 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`" + " WHERE account.`synchronize`" +
" AND folder.unified" + " AND folder.unified" +
" GROUP BY folder.id") " GROUP BY folder.id")

@ -228,6 +228,11 @@ public class FragmentFolders extends FragmentBase {
args.putLong("account", account); args.putLong("account", account);
new SimpleTask<Boolean>() { new SimpleTask<Boolean>() {
@Override
protected void onPostExecute(Bundle args) {
swipeRefresh.setRefreshing(false);
}
@Override @Override
protected Boolean onExecute(Context context, Bundle args) { protected Boolean onExecute(Context context, Bundle args) {
long aid = args.getLong("account"); long aid = args.getLong("account");
@ -236,6 +241,9 @@ public class FragmentFolders extends FragmentBase {
NetworkInfo ni = cm.getActiveNetworkInfo(); NetworkInfo ni = cm.getActiveNetworkInfo();
boolean internet = (ni != null && ni.isConnected()); boolean internet = (ni != null && ni.isConnected());
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean enabled = prefs.getBoolean("enabled", true);
DB db = DB.getInstance(context); DB db = DB.getInstance(context);
try { try {
db.beginTransaction(); db.beginTransaction();
@ -248,7 +256,7 @@ public class FragmentFolders extends FragmentBase {
List<EntityFolder> folders = db.folder().getFoldersSynchronizingUnified(); List<EntityFolder> folders = db.folder().getFoldersSynchronizingUnified();
for (EntityFolder folder : folders) { for (EntityFolder folder : folders) {
EntityAccount account = db.account().getAccount(folder.account); EntityAccount account = db.account().getAccount(folder.account);
if (account.ondemand) if (account.ondemand || !enabled)
if (internet) { if (internet) {
now = true; now = true;
ServiceUI.sync(context, folder.id); ServiceUI.sync(context, folder.id);
@ -261,7 +269,7 @@ public class FragmentFolders extends FragmentBase {
} }
} else { } else {
EntityAccount account = db.account().getAccount(aid); EntityAccount account = db.account().getAccount(aid);
if (account.ondemand) { if (account.ondemand || !enabled) {
if (internet) { if (internet) {
now = true; now = true;
List<EntityFolder> folders = db.folder().getFoldersOnDemandSync(aid); List<EntityFolder> folders = db.folder().getFoldersOnDemandSync(aid);
@ -291,15 +299,12 @@ public class FragmentFolders extends FragmentBase {
@Override @Override
protected void onExecuted(Bundle args, Boolean now) { protected void onExecuted(Bundle args, Boolean now) {
if (!now) { if (!now)
swipeRefresh.setRefreshing(false);
Snackbar.make(view, R.string.title_sync_delayed, Snackbar.LENGTH_LONG).show(); Snackbar.make(view, R.string.title_sync_delayed, Snackbar.LENGTH_LONG).show();
}
} }
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
swipeRefresh.setRefreshing(false);
if (ex instanceof IllegalArgumentException) if (ex instanceof IllegalArgumentException)
Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG).show(); Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG).show();
else else

@ -496,6 +496,9 @@ public class FragmentMessages extends FragmentBase {
NetworkInfo ni = cm.getActiveNetworkInfo(); NetworkInfo ni = cm.getActiveNetworkInfo();
boolean internet = (ni != null && ni.isConnected()); boolean internet = (ni != null && ni.isConnected());
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean enabled = prefs.getBoolean("enabled", true);
DB db = DB.getInstance(context); DB db = DB.getInstance(context);
try { try {
db.beginTransaction(); db.beginTransaction();
@ -523,7 +526,7 @@ public class FragmentMessages extends FragmentBase {
nointernet = true; nointernet = true;
} else { } else {
EntityAccount account = db.account().getAccount(folder.account); EntityAccount account = db.account().getAccount(folder.account);
if (account.ondemand) { if (account.ondemand || !enabled) {
if (internet) { if (internet) {
now = true; now = true;
ServiceUI.sync(context, folder.id); ServiceUI.sync(context, folder.id);

@ -310,7 +310,8 @@ public class ServiceUI extends IntentService {
public static void sync(Context context, long folder) { public static void sync(Context context, long folder) {
DB db = DB.getInstance(context); DB db = DB.getInstance(context);
db.folder().setFolderSyncState(folder, "requested"); db.folder().setFolderState(folder, "waiting");
db.folder().setFolderSyncState(folder, "manual");
context.startService( context.startService(
new Intent(context, ServiceUI.class) new Intent(context, ServiceUI.class)

@ -33,7 +33,8 @@ public class TupleFolderEx extends EntityFolder {
boolean isSynchronizing() { boolean isSynchronizing() {
return (sync_state != null && return (sync_state != null &&
(EntityFolder.OUTBOX.equals(type) || (EntityFolder.OUTBOX.equals(type) ||
accountOnDemand || "connected".equals(accountState))); !"requested".equals(sync_state) ||
"connected".equals(accountState)));
} }
@Override @Override

Loading…
Cancel
Save