diff --git a/app/src/main/java/eu/faircode/email/DaoMessage.java b/app/src/main/java/eu/faircode/email/DaoMessage.java index 8ea0f9c88a..420bea4287 100644 --- a/app/src/main/java/eu/faircode/email/DaoMessage.java +++ b/app/src/main/java/eu/faircode/email/DaoMessage.java @@ -261,6 +261,12 @@ public interface DaoMessage { " AND NOT ui_browsed") List getUids(long folder, Long received); + @Query("SELECT * FROM message" + + " WHERE folder = :folder" + + " AND uid IS NULL" + + " AND ui_browsed") + List getSentOrphans(long folder); + @Query("SELECT * FROM message WHERE NOT ui_snoozed IS NULL") List getSnoozed(); @@ -294,6 +300,9 @@ public interface DaoMessage { @Query("UPDATE message SET ui_hide = :ui_hide WHERE id = :id") int setMessageUiHide(long id, boolean ui_hide); + @Query("UPDATE message SET ui_browsed = :ui_browsed WHERE id = :id") + int setMessageUiBrowsed(long id, boolean ui_browsed); + @Query("UPDATE message SET ui_ignored = :ui_ignored WHERE id = :id") int setMessageUiIgnored(long id, boolean ui_ignored); diff --git a/app/src/main/java/eu/faircode/email/EntityMessage.java b/app/src/main/java/eu/faircode/email/EntityMessage.java index d7bbac47b8..142f31c207 100644 --- a/app/src/main/java/eu/faircode/email/EntityMessage.java +++ b/app/src/main/java/eu/faircode/email/EntityMessage.java @@ -257,7 +257,7 @@ public class EntityMessage implements Serializable { this.ui_hide.equals(other.ui_hide) && this.ui_found.equals(other.ui_found) && this.ui_ignored.equals(other.ui_ignored) && - //this.ui_browsed.equals(other.ui_browsed) && + this.ui_browsed.equals(other.ui_browsed) && (this.ui_snoozed == null ? other.ui_snoozed == null : this.ui_snoozed.equals(other.ui_snoozed)) && (this.warning == null ? other.warning == null : this.warning.equals(other.warning)) && (this.error == null ? other.error == null : this.error.equals(other.error))); diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 419c7817c9..b1444c1002 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -2303,6 +2303,17 @@ public class ServiceSynchronize extends LifecycleService { // Delete not synchronized messages without uid db.message().deleteOrphans(folder.id); + // Add local sent messages to remote sent folder + if (EntityFolder.SENT.equals(folder.type)) { + List orphans = db.message().getSentOrphans(folder.id); + Log.i(folder.name + " sent orphans=" + orphans.size()); + for (EntityMessage orphan : orphans) { + Log.i(folder.name + " adding orphan id=" + orphan.id); + EntityOperation.queue(this, db, orphan, EntityOperation.ADD); + db.message().setMessageUiBrowsed(orphan.id, false); // Prevent adding again + } + } + if (download) { db.folder().setFolderSyncState(folder.id, "downloading");