From f80d6c683b3e6b8859207ecdfb17cdd82243cc67 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 2 Mar 2019 17:46:49 +0000 Subject: [PATCH] Reset failed foreground sync --- app/src/main/java/eu/faircode/email/Core.java | 10 ++++++++-- .../main/java/eu/faircode/email/EntityOperation.java | 5 ++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 3bb850abed..d86a7e3e9d 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -222,7 +222,7 @@ class Core { if (ex instanceof MessageRemovedException || ex instanceof FolderNotFoundException || ex instanceof IllegalArgumentException) { - Log.w("Unrecoverable", ex); + Log.w("Unrecoverable"); // There is no use in repeating db.operation().deleteOperation(op.id); @@ -254,12 +254,18 @@ class Core { } else if (ex instanceof MessagingException) { // Socket timeout is a recoverable condition (send message) if (ex.getCause() instanceof SocketTimeoutException) { - Log.w("Recoverable", ex); + Log.w("Recoverable"); // No need to inform user return; } } + if (EntityOperation.SYNC.equals(op.name) && jargs.getBoolean(3) /* foreground */) { + Log.w("Deleting foreground SYNC"); + db.operation().deleteOperation(op.id); + db.folder().setFolderSyncState(folder.id, null); + } + throw ex; } } finally { diff --git a/app/src/main/java/eu/faircode/email/EntityOperation.java b/app/src/main/java/eu/faircode/email/EntityOperation.java index 1264190615..da65d46b07 100644 --- a/app/src/main/java/eu/faircode/email/EntityOperation.java +++ b/app/src/main/java/eu/faircode/email/EntityOperation.java @@ -228,11 +228,14 @@ public class EntityOperation { if (folder.account != null) account = db.account().getAccount(folder.account); + JSONArray jargs = folder.getSyncArgs(); + jargs.put(foreground); + EntityOperation operation = new EntityOperation(); operation.folder = folder.id; operation.message = null; operation.name = SYNC; - operation.args = folder.getSyncArgs().toString(); + operation.args = jargs.toString(); operation.created = new Date().getTime(); operation.id = db.operation().insertOperation(operation);