diff --git a/app/src/main/java/eu/faircode/email/AdapterAttachment.java b/app/src/main/java/eu/faircode/email/AdapterAttachment.java index 94fe7040e7..d96aea662c 100644 --- a/app/src/main/java/eu/faircode/email/AdapterAttachment.java +++ b/app/src/main/java/eu/faircode/email/AdapterAttachment.java @@ -267,7 +267,8 @@ public class AdapterAttachment extends RecyclerView.Adapter getAttachments(long message); + LiveData> liveAttachments(long message); @Query("SELECT * FROM attachment WHERE message = :message AND sequence = :sequence") EntityAttachment getAttachment(long message, int sequence); diff --git a/app/src/main/java/eu/faircode/email/EntityAttachment.java b/app/src/main/java/eu/faircode/email/EntityAttachment.java index 3c7e8b59d7..f441945e94 100644 --- a/app/src/main/java/eu/faircode/email/EntityAttachment.java +++ b/app/src/main/java/eu/faircode/email/EntityAttachment.java @@ -58,4 +58,20 @@ public class EntityAttachment { @Ignore BodyPart part; + + @Override + public boolean equals(Object obj) { + if (obj instanceof EntityAttachment) { + EntityAttachment other = (EntityAttachment) obj; + return (this.message.equals(other.message) && + this.sequence.equals(other.sequence) && + (this.name == null ? other.name == null : this.name.equals(other.name)) && + this.type.equals(other.type) && + (this.size == null ? other.size == null : this.size.equals(other.size)) && + (this.progress == null ? other.progress == null : this.progress.equals(other.progress)) && + (this.content == null ? other.content == null : other.content != null)); + } else + return false; + } + } diff --git a/app/src/main/java/eu/faircode/email/FragmentMessage.java b/app/src/main/java/eu/faircode/email/FragmentMessage.java index 779ac34a39..8a23721c30 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessage.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessage.java @@ -231,6 +231,16 @@ public class FragmentMessage extends Fragment { tvSubject.setTypeface(null, visibility); tvCount.setTypeface(null, visibility); + DB.getInstance(getContext()).attachment().liveAttachments(id).removeObservers(FragmentMessage.this); + DB.getInstance(getContext()).attachment().liveAttachments(id).observe(FragmentMessage.this, + new Observer>() { + @Override + public void onChanged(@Nullable List attachments) { + adapter.set(attachments); + grpAttachments.setVisibility(attachments.size() > 0 ? View.VISIBLE : View.GONE); + } + }); + top_navigation.getMenu().findItem(R.id.action_thread).setVisible(message.count > 1); MenuItem actionSeen = top_navigation.getMenu().findItem(R.id.action_seen); @@ -454,7 +464,6 @@ public class FragmentMessage extends Fragment { result.hasTrash = (db.folder().getFolderByType(message.account, EntityFolder.TYPE_TRASH) != null); result.hasJunk = (db.folder().getFolderByType(message.account, EntityFolder.TYPE_JUNK) != null); result.hasArchive = (db.folder().getFolderByType(message.account, EntityFolder.TYPE_ARCHIVE) != null); - result.attachments = db.attachment().getAttachments(id); } catch (Throwable ex) { Log.e(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex)); result.ex = ex; @@ -481,9 +490,6 @@ public class FragmentMessage extends Fragment { ? null : Helper.localizeFolderName(getContext(), data.folder.name)); - adapter.set(data.attachments); - grpAttachments.setVisibility(data.attachments.size() > 0 ? View.VISIBLE : View.GONE); - boolean outbox = EntityFolder.TYPE_OUTBOX.equals(data.folder.type); bottom_navigation.setTag(data.folder.type); // trash or delete @@ -505,6 +511,5 @@ public class FragmentMessage extends Fragment { boolean hasTrash; boolean hasJunk; boolean hasArchive; - List attachments; } } diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 31cca983db..986bb22f36 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -731,7 +731,7 @@ public class ServiceSynchronize extends LifecycleService { } // Store attachment data - attachment.progress = 100; + attachment.progress = null; attachment.content = os.toByteArray(); db.attachment().updateAttachment(attachment); Log.i(Helper.TAG, "Downloaded bytes=" + attachment.content.length);