Temp move unseen, fixed cross account autoread

This commit is contained in:
M66B 2019-01-24 18:45:38 +00:00
parent 4b0e23413e
commit 4140bb021c
3 changed files with 18 additions and 15 deletions

View File

@ -173,7 +173,6 @@ public class EntityOperation {
// Message with same msgid can be in archive
Long newid = null;
if (message.uid != null &&
message.ui_seen &&
target.synchronize &&
message.received > cal_keep.getTimeInMillis() &&
db.message().countMessageByMsgId(target.id, message.msgid) == 0) {
@ -210,10 +209,8 @@ public class EntityOperation {
name = ADD;
folder = target.id;
jargs = new JSONArray();
if (newid != null) {
jargs.put(0, newid);
jargs.put(1, autoread);
}
jargs.put(0, newid); // Can be null
jargs.put(1, autoread);
}
} else if (DELETE.equals(name))

View File

@ -1976,13 +1976,12 @@ public class FragmentMessages extends FragmentBase {
db.beginTransaction();
EntityMessage message = db.message().getMessage(id);
EntityFolder folder = db.folder().getFolder(message.folder);
if (!message.content)
EntityOperation.queue(context, db, message, EntityOperation.BODY);
if (!message.ui_seen && !EntityFolder.OUTBOX.equals(folder.type))
EntityOperation.queue(context, db, message, EntityOperation.SEEN, true);
if (message.uid != null) {
if (!message.content)
EntityOperation.queue(context, db, message, EntityOperation.BODY);
if (!message.ui_seen)
EntityOperation.queue(context, db, message, EntityOperation.SEEN, true);
}
db.setTransactionSuccessful();
} finally {

View File

@ -1544,9 +1544,11 @@ public class ServiceSynchronize extends LifecycleService {
db.message().deleteMessage(message.id);
// Delete temporary copy in target folder
if (EntityOperation.MOVE.equals(op.name) && jargs.length() > 2)
if (EntityOperation.MOVE.equals(op.name) &&
jargs.length() > 2)
db.message().deleteMessage(jargs.getInt(2));
if (EntityOperation.ADD.equals(op.name) && jargs.length() > 0)
if (EntityOperation.ADD.equals(op.name) &&
jargs.length() > 0 && !jargs.isNull(0))
db.message().deleteMessage(jargs.getInt(0));
} else
db.message().setMessageUiHide(message.id, false);
@ -1710,11 +1712,16 @@ public class ServiceSynchronize extends LifecycleService {
if (autoread && !imessage.isSet(Flags.Flag.SEEN))
imessage.setFlag(Flags.Flag.SEEN, true);
if (target.id.equals(folder.id)) {
Log.w(folder.name + " MOVE onto self");
return;
}
if (istore.hasCapability("MOVE") && !EntityFolder.DRAFTS.equals(folder.type)) {
Folder itarget = istore.getFolder(target.name);
ifolder.moveMessages(new Message[]{imessage}, itarget);
} else {
Log.w("MOVE by DELETE/APPEND");
Log.w(folder.name + " MOVE by DELETE/APPEND");
// Delete source
imessage.setFlag(Flags.Flag.DELETED, true);