From 3e15a0594c96b00474111e49266ea91318f9122d Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 2 Mar 2019 10:49:58 +0000 Subject: [PATCH] Download content outside of transaction --- .../eu/faircode/email/AdapterMessage.java | 2 +- app/src/main/java/eu/faircode/email/Core.java | 12 ++++------ .../java/eu/faircode/email/DaoMessage.java | 7 ++---- .../eu/faircode/email/EntityOperation.java | 2 +- .../java/eu/faircode/email/EntityRule.java | 2 +- .../eu/faircode/email/FragmentCompose.java | 4 ++-- .../main/java/eu/faircode/email/Helper.java | 2 +- .../eu/faircode/email/ServiceSynchronize.java | 24 +++++-------------- 8 files changed, 18 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 718ba22c06..0a787c2a86 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -1477,7 +1477,7 @@ public class AdapterMessage extends RecyclerView.Adapter= 0 && state.running(); j--) try { - db.beginTransaction(); if (ids[from + j] != null) downloadMessage( context, folder, ifolder, (IMAPMessage) isub[j], ids[from + j]); - db.setTransactionSuccessful(); } catch (FolderClosedException ex) { throw ex; } catch (FolderClosedIOException ex) { @@ -1015,7 +1012,6 @@ class Core { } catch (Throwable ex) { Log.e(folder.name, ex); } finally { - db.endTransaction(); // Free memory ((IMAPMessage) isub[j]).invalidateHeaders(); } @@ -1379,8 +1375,8 @@ class Core { if (!metered || (message.size != null && message.size < maxSize)) { String body = parts.getHtml(context); Helper.writeText(EntityMessage.getFile(context, message.id), body); - db.message().setMessageContent(message.id, true, HtmlHelper.getPreview(body)); - db.message().setMessageWarning(message.id, parts.getWarnings(message.warning)); + db.message().setMessageContent(message.id, true, + HtmlHelper.getPreview(body), parts.getWarnings(message.warning)); Log.i(folder.name + " downloaded message id=" + message.id + " size=" + message.size); } } diff --git a/app/src/main/java/eu/faircode/email/DaoMessage.java b/app/src/main/java/eu/faircode/email/DaoMessage.java index 00036a4070..7c52e4cc9d 100644 --- a/app/src/main/java/eu/faircode/email/DaoMessage.java +++ b/app/src/main/java/eu/faircode/email/DaoMessage.java @@ -304,14 +304,11 @@ public interface DaoMessage { @Query("UPDATE message SET sent = :sent WHERE id = :id") int setMessageSent(long id, Long sent); - @Query("UPDATE message SET warning = :warning WHERE id = :id") - int setMessageWarning(long id, String warning); - @Query("UPDATE message SET error = :error WHERE id = :id") int setMessageError(long id, String error); - @Query("UPDATE message SET content = :content, preview = :preview WHERE id = :id") - int setMessageContent(long id, boolean content, String preview); + @Query("UPDATE message SET content = :content, preview = :preview, warning = :warning WHERE id = :id") + int setMessageContent(long id, boolean content, String preview, String warning); @Query("UPDATE message SET headers = :headers WHERE id = :id") int setMessageHeaders(long id, String headers); diff --git a/app/src/main/java/eu/faircode/email/EntityOperation.java b/app/src/main/java/eu/faircode/email/EntityOperation.java index debb33946b..75d40916af 100644 --- a/app/src/main/java/eu/faircode/email/EntityOperation.java +++ b/app/src/main/java/eu/faircode/email/EntityOperation.java @@ -165,7 +165,7 @@ public class EntityOperation { EntityMessage.getFile(context, newid)); } catch (IOException ex) { Log.e(ex); - db.message().setMessageContent(newid, false, null); + db.message().setMessageContent(newid, false, null, null); } EntityAttachment.copy(context, db, message.id, newid); diff --git a/app/src/main/java/eu/faircode/email/EntityRule.java b/app/src/main/java/eu/faircode/email/EntityRule.java index 2c4dbc1062..102f96e8b2 100644 --- a/app/src/main/java/eu/faircode/email/EntityRule.java +++ b/app/src/main/java/eu/faircode/email/EntityRule.java @@ -221,7 +221,7 @@ public class EntityRule { reply.received = new Date().getTime(); reply.id = db.message().insertMessage(reply); Helper.writeText(EntityMessage.getFile(context, reply.id), body); - db.message().setMessageContent(reply.id, true, HtmlHelper.getPreview(body)); + db.message().setMessageContent(reply.id, true, HtmlHelper.getPreview(body), null); EntityOperation.queue(context, db, reply, EntityOperation.SEND); } diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 6c0d2f1f7e..fac4d3b01f 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -1671,7 +1671,7 @@ public class FragmentCompose extends FragmentBase { draft.id = db.message().insertMessage(draft); Helper.writeText(EntityMessage.getFile(context, draft.id), body); - db.message().setMessageContent(draft.id, true, HtmlHelper.getPreview(body)); + db.message().setMessageContent(draft.id, true, HtmlHelper.getPreview(body), null); // Write reference text if (ref != null && ref.content) { @@ -2020,7 +2020,7 @@ public class FragmentCompose extends FragmentBase { draft.received = new Date().getTime(); db.message().updateMessage(draft); Helper.writeText(EntityMessage.getFile(context, draft.id), body); - db.message().setMessageContent(draft.id, true, HtmlHelper.getPreview(body)); + db.message().setMessageContent(draft.id, true, HtmlHelper.getPreview(body), null); } // Remove unused inline images diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 6545443a87..195f9da387 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -412,7 +412,7 @@ public class Helper { draft.received = new Date().getTime(); draft.id = db.message().insertMessage(draft); writeText(EntityMessage.getFile(context, draft.id), body); - db.message().setMessageContent(draft.id, true, HtmlHelper.getPreview(body)); + db.message().setMessageContent(draft.id, true, HtmlHelper.getPreview(body), null); attachSettings(context, draft.id, 1); attachNetworkInfo(context, draft.id, 2); diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 5c4abd0440..9db797f4bf 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -435,15 +435,9 @@ public class ServiceSynchronize extends LifecycleService { } if (db.folder().getFolderDownload(folder.id)) - try { - db.beginTransaction(); - Core.downloadMessage(ServiceSynchronize.this, - folder, (IMAPFolder) ifolder, - (IMAPMessage) imessage, message.id); - db.setTransactionSuccessful(); - } finally { - db.endTransaction(); - } + Core.downloadMessage(ServiceSynchronize.this, + folder, (IMAPFolder) ifolder, + (IMAPMessage) imessage, message.id); } catch (MessageRemovedException ex) { Log.w(folder.name, ex); } catch (FolderClosedException ex) { @@ -524,15 +518,9 @@ public class ServiceSynchronize extends LifecycleService { } if (db.folder().getFolderDownload(folder.id)) - try { - db.beginTransaction(); - Core.downloadMessage(ServiceSynchronize.this, - folder, (IMAPFolder) ifolder, - (IMAPMessage) e.getMessage(), message.id); - db.setTransactionSuccessful(); - } finally { - db.endTransaction(); - } + Core.downloadMessage(ServiceSynchronize.this, + folder, (IMAPFolder) ifolder, + (IMAPMessage) e.getMessage(), message.id); } catch (MessageRemovedException ex) { Log.w(folder.name, ex); } catch (FolderClosedException ex) {