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);
NotificationManager nm =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
int retry = 0;
boolean group = true;
Log.i(folder.name + " executing operations=" + ops.size());
@ -202,6 +205,10 @@ class Core {
" group=" + group +
" 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))
throw new IllegalArgumentException("Invalid folder=" + folder.id + "/" + op.folder);
@ -487,6 +494,7 @@ class Core {
if (message != null &&
!EntityOperation.FETCH.equals(op.name) &&
!EntityOperation.ATTACHMENT.equals(op.name) &&
!(ex instanceof IllegalArgumentException))
db.message().setMessageError(message.id, op.error);
@ -512,6 +520,8 @@ class Core {
(ex.getCause() instanceof BadCommandException ||
ex.getCause() instanceof CommandFailedException /* NO */)) ||
MessageHelper.isRemoved(ex) ||
EntityOperation.HEADERS.equals(op.name) ||
EntityOperation.RAW.equals(op.name) ||
EntityOperation.ATTACHMENT.equals(op.name) ||
(EntityOperation.ADD.equals(op.name) &&
EntityFolder.DRAFTS.equals(folder.type))) {
@ -599,6 +609,18 @@ class Core {
}
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 {
retry++;
if (retry < LOCAL_RETRY_MAX &&

@ -511,7 +511,9 @@ public class EntityOperation {
if (EntityOperation.ATTACHMENT.equals(name))
try {
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;
} catch (JSONException ex) {
Log.e(ex);

@ -820,6 +820,8 @@
<string name="title_delete_contacts">Delete all local contacts?</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_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_display_name">Display name</string>

Loading…
Cancel
Save