Automatically add local sent messages to remote folder

This commit is contained in:
M66B 2019-01-20 08:31:34 +00:00
parent bce17afbbd
commit b472b65bf5
3 changed files with 21 additions and 1 deletions

View File

@ -261,6 +261,12 @@ public interface DaoMessage {
" AND NOT ui_browsed")
List<Long> getUids(long folder, Long received);
@Query("SELECT * FROM message" +
" WHERE folder = :folder" +
" AND uid IS NULL" +
" AND ui_browsed")
List<EntityMessage> getSentOrphans(long folder);
@Query("SELECT * FROM message WHERE NOT ui_snoozed IS NULL")
List<EntityMessage> 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);

View File

@ -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)));

View File

@ -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<EntityMessage> 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");