From f912c9346f149d2cf9c870e6cab69d0e81361995 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 11 Mar 2021 08:05:41 +0100 Subject: [PATCH] Show source message on failure on cross account move --- app/src/main/java/eu/faircode/email/Core.java | 45 ++++++++++++------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 0a622f02a4..1cb6990faf 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -1025,28 +1025,39 @@ class Core { Log.e(ex); } } else { + // Lookup added messages Long found = findUid(context, ifolder, message.msgid, false); - if (found == null) { - String msg = "Added message not found msgid=" + message.msgid; - Log.e(msg); - throw new IllegalArgumentException(msg); - } try { - Log.i(folder.name + " Fetching uid=" + found); - JSONArray fargs = new JSONArray(); - fargs.put(found); - onFetch(context, fargs, folder, istore, ifolder, state); - } catch (Throwable ex) { - Log.e(ex); - } + db.beginTransaction(); + + if (found == null) { + db.message().setMessageError(message.id, "Message not found in target folder"); + db.message().setMessageUiHide(message.id, false); + } else { + // Mark source read + if (autoread) + EntityOperation.queue(context, message, EntityOperation.SEEN, true); + + // Delete source + EntityOperation.queue(context, message, EntityOperation.DELETE); + } - // Mark source read - if (autoread) - EntityOperation.queue(context, message, EntityOperation.SEEN, true); + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } - // Delete source - EntityOperation.queue(context, message, EntityOperation.DELETE); + // Fetch target + if (found != null) + try { + Log.i(folder.name + " Fetching uid=" + found); + JSONArray fargs = new JSONArray(); + fargs.put(found); + onFetch(context, fargs, folder, istore, ifolder, state); + } catch (Throwable ex) { + Log.e(ex); + } } }