Improved operation errors

pull/198/head
M66B 4 years ago
parent 1c797f5f6c
commit fcc893627e

@ -185,6 +185,9 @@ class Core {
DB db = DB.getInstance(context); DB db = DB.getInstance(context);
NotificationManager nm =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
int retry = 0; int retry = 0;
boolean group = true; boolean group = true;
Log.i(folder.name + " executing operations=" + ops.size()); Log.i(folder.name + " executing operations=" + ops.size());
@ -202,6 +205,10 @@ class Core {
" group=" + group + " group=" + group +
" retry=" + retry); " retry=" + retry);
if (EntityOperation.HEADERS.equals(op.name) ||
EntityOperation.RAW.equals(op.name))
nm.cancel(op.name + ":" + op.message, 1);
if (!Objects.equals(folder.id, op.folder)) if (!Objects.equals(folder.id, op.folder))
throw new IllegalArgumentException("Invalid folder=" + folder.id + "/" + op.folder); throw new IllegalArgumentException("Invalid folder=" + folder.id + "/" + op.folder);
@ -487,6 +494,7 @@ class Core {
if (message != null && if (message != null &&
!EntityOperation.FETCH.equals(op.name) && !EntityOperation.FETCH.equals(op.name) &&
!EntityOperation.ATTACHMENT.equals(op.name) &&
!(ex instanceof IllegalArgumentException)) !(ex instanceof IllegalArgumentException))
db.message().setMessageError(message.id, op.error); db.message().setMessageError(message.id, op.error);
@ -512,6 +520,8 @@ class Core {
(ex.getCause() instanceof BadCommandException || (ex.getCause() instanceof BadCommandException ||
ex.getCause() instanceof CommandFailedException /* NO */)) || ex.getCause() instanceof CommandFailedException /* NO */)) ||
MessageHelper.isRemoved(ex) || MessageHelper.isRemoved(ex) ||
EntityOperation.HEADERS.equals(op.name) ||
EntityOperation.RAW.equals(op.name) ||
EntityOperation.ATTACHMENT.equals(op.name) || EntityOperation.ATTACHMENT.equals(op.name) ||
(EntityOperation.ADD.equals(op.name) && (EntityOperation.ADD.equals(op.name) &&
EntityFolder.DRAFTS.equals(folder.type))) { EntityFolder.DRAFTS.equals(folder.type))) {
@ -599,6 +609,18 @@ class Core {
} }
ops.remove(op); ops.remove(op);
int resid = context.getResources().getIdentifier(
"title_op_title_" + op.name,
"string",
context.getPackageName());
String title = (resid == 0 ? null : context.getString(resid));
if (title != null) {
NotificationCompat.Builder builder =
getNotificationError(context, "warning", title, ex);
nm.notify(op.name + ":" + op.message, 1, builder.build());
}
} else { } else {
retry++; retry++;
if (retry < LOCAL_RETRY_MAX && if (retry < LOCAL_RETRY_MAX &&

@ -511,7 +511,9 @@ public class EntityOperation {
if (EntityOperation.ATTACHMENT.equals(name)) if (EntityOperation.ATTACHMENT.equals(name))
try { try {
JSONArray jargs = new JSONArray(args); JSONArray jargs = new JSONArray(args);
db.attachment().setProgress(jargs.getLong(0), null); long id = jargs.getLong(0);
db.attachment().setProgress(id, null);
db.attachment().setError(id, error);
return; return;
} catch (JSONException ex) { } catch (JSONException ex) {
Log.e(ex); Log.e(ex);

@ -820,6 +820,8 @@
<string name="title_delete_contacts">Delete all local contacts?</string> <string name="title_delete_contacts">Delete all local contacts?</string>
<string name="title_no_operations">No pending operations</string> <string name="title_no_operations">No pending operations</string>
<string name="title_hint_operations">Deleting operations can result in disappearing messages and synchronization problems</string> <string name="title_hint_operations">Deleting operations can result in disappearing messages and synchronization problems</string>
<string name="title_op_title_headers">Downloading headers</string>
<string name="title_op_title_raw">Downloading raw message</string>
<string name="title_folder_name">Folder name</string> <string name="title_folder_name">Folder name</string>
<string name="title_display_name">Display name</string> <string name="title_display_name">Display name</string>

Loading…
Cancel
Save