|
|
|
@ -794,6 +794,7 @@ public class ServiceSynchronize extends LifecycleService {
|
|
|
|
|
if (imessage == null)
|
|
|
|
|
throw new MessageRemovedException();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Get folder
|
|
|
|
|
Folder itarget = istore.getFolder(target.name);
|
|
|
|
|
|
|
|
|
@ -829,7 +830,6 @@ public class ServiceSynchronize extends LifecycleService {
|
|
|
|
|
Session isession = Session.getInstance(props, null);
|
|
|
|
|
MimeMessage icopy = MessageHelper.from(message, isession);
|
|
|
|
|
itarget.appendMessages(new Message[]{icopy});
|
|
|
|
|
icopy.setFlag(Flags.Flag.SEEN, message.seen);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Delete original
|
|
|
|
@ -1122,6 +1122,8 @@ public class ServiceSynchronize extends LifecycleService {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MessageHelper helper = new MessageHelper(imessage);
|
|
|
|
|
boolean seen = helper.getSeen();
|
|
|
|
|
|
|
|
|
|
DB db = DB.getInstance(this);
|
|
|
|
|
|
|
|
|
@ -1131,20 +1133,26 @@ public class ServiceSynchronize extends LifecycleService {
|
|
|
|
|
message = db.message().getMessage(id);
|
|
|
|
|
Log.i(Helper.TAG, "By id=" + id + " uid=" + (message == null ? "n/a" : message.uid));
|
|
|
|
|
}
|
|
|
|
|
if (message != null && message.folder != folder.id) {
|
|
|
|
|
if (EntityFolder.ARCHIVE.equals(folder.type))
|
|
|
|
|
message = null;
|
|
|
|
|
else // Outbox to sent
|
|
|
|
|
message.folder = folder.id;
|
|
|
|
|
}
|
|
|
|
|
if (message != null)
|
|
|
|
|
if (message.folder == folder.id) {
|
|
|
|
|
if (message.uid == null) {
|
|
|
|
|
// Append (move)
|
|
|
|
|
message.uid = uid;
|
|
|
|
|
if (!seen)
|
|
|
|
|
imessage.setFlag(Flags.Flag.SEEN, true);
|
|
|
|
|
// Will be updated because message.seen <> seen
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (EntityFolder.ARCHIVE.equals(folder.type))
|
|
|
|
|
message = null;
|
|
|
|
|
else // Outbox to sent
|
|
|
|
|
message.folder = folder.id;
|
|
|
|
|
}
|
|
|
|
|
if (message == null) {
|
|
|
|
|
message = db.message().getMessage(folder.id, uid);
|
|
|
|
|
Log.i(Helper.TAG, "By uid=" + uid + " id=" + (message == null ? "n/a" : message.id));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MessageHelper helper = new MessageHelper(imessage);
|
|
|
|
|
boolean seen = helper.getSeen();
|
|
|
|
|
|
|
|
|
|
if (message == null) {
|
|
|
|
|
FetchProfile fp1 = new FetchProfile();
|
|
|
|
|
fp1.add(FetchProfile.Item.ENVELOPE);
|
|
|
|
@ -1189,23 +1197,14 @@ public class ServiceSynchronize extends LifecycleService {
|
|
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
} else if (message.seen != seen) {
|
|
|
|
|
//if (message.uid == null)
|
|
|
|
|
message.uid = uid; // Complete move
|
|
|
|
|
message.seen = seen;
|
|
|
|
|
message.ui_seen = seen;
|
|
|
|
|
db.message().updateMessage(message);
|
|
|
|
|
Log.i(Helper.TAG, folder.name + " updated id=" + message.id + " uid=" + message.uid);
|
|
|
|
|
return -1;
|
|
|
|
|
} else {
|
|
|
|
|
if (message.uid == null) {
|
|
|
|
|
message.uid = uid;
|
|
|
|
|
db.message().updateMessage(message);
|
|
|
|
|
Log.i(Helper.TAG, folder.name + " updated id=" + message.id + " set uid=" + message.uid);
|
|
|
|
|
return -1;
|
|
|
|
|
} else {
|
|
|
|
|
Log.v(Helper.TAG, folder.name + " unchanged id=" + message.id + " uid=" + message.uid);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
Log.v(Helper.TAG, folder.name + " unchanged id=" + message.id + " uid=" + message.uid);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|