|
|
@ -955,27 +955,23 @@ public class ServiceSynchronize extends LifecycleService {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
db.beginTransaction();
|
|
|
|
db.beginTransaction();
|
|
|
|
|
|
|
|
|
|
|
|
// Move message to sent
|
|
|
|
// Mark message as sent
|
|
|
|
EntityFolder sent = db.folder().getFolderByType(ident.account, EntityFolder.SENT);
|
|
|
|
// - will be moved to sent folder by synchronize message later
|
|
|
|
if (sent == null)
|
|
|
|
|
|
|
|
; // Leave message in outbox
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
message.folder = sent.id;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Update state
|
|
|
|
|
|
|
|
if (message.thread == null)
|
|
|
|
|
|
|
|
message.thread = imessage.getMessageID();
|
|
|
|
|
|
|
|
message.sent = imessage.getSentDate().getTime();
|
|
|
|
message.sent = imessage.getSentDate().getTime();
|
|
|
|
message.seen = true;
|
|
|
|
message.seen = true;
|
|
|
|
message.ui_seen = true;
|
|
|
|
message.ui_seen = true;
|
|
|
|
db.message().updateMessage(message);
|
|
|
|
db.message().updateMessage(message);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: store sent setting per account
|
|
|
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
|
|
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
|
|
|
if (prefs.getBoolean("store_sent", false))
|
|
|
|
if (prefs.getBoolean("store_sent", false)) {
|
|
|
|
|
|
|
|
EntityFolder sent = db.folder().getFolderByType(ident.account, EntityFolder.SENT);
|
|
|
|
if (sent != null) {
|
|
|
|
if (sent != null) {
|
|
|
|
|
|
|
|
// TODO: how to handle thread?
|
|
|
|
Log.i(Helper.TAG, "Appending sent msgid=" + message.msgid);
|
|
|
|
Log.i(Helper.TAG, "Appending sent msgid=" + message.msgid);
|
|
|
|
EntityOperation.queue(db, message, EntityOperation.ADD); // Could already exist
|
|
|
|
EntityOperation.queue(db, message, EntityOperation.ADD); // Could already exist
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
db.setTransactionSuccessful();
|
|
|
|
db.setTransactionSuccessful();
|
|
|
|
} finally {
|
|
|
|
} finally {
|
|
|
@ -1231,12 +1227,15 @@ public class ServiceSynchronize extends LifecycleService {
|
|
|
|
String msgid = helper.getMessageID();
|
|
|
|
String msgid = helper.getMessageID();
|
|
|
|
for (EntityMessage dup : db.message().getMessageByMsgId(folder.account, msgid)) {
|
|
|
|
for (EntityMessage dup : db.message().getMessageByMsgId(folder.account, msgid)) {
|
|
|
|
EntityFolder dfolder = db.folder().getFolder(dup.folder);
|
|
|
|
EntityFolder dfolder = db.folder().getFolder(dup.folder);
|
|
|
|
|
|
|
|
boolean outbox = EntityFolder.OUTBOX.equals(dfolder.type);
|
|
|
|
Log.i(Helper.TAG, folder.name + " found as id=" + dup.id +
|
|
|
|
Log.i(Helper.TAG, folder.name + " found as id=" + dup.id +
|
|
|
|
" folder=" + dfolder.type + ":" + dup.folder + "/" + folder.type + ":" + folder.id);
|
|
|
|
" folder=" + dfolder.type + ":" + dup.folder + "/" + folder.type + ":" + folder.id);
|
|
|
|
if (dup.folder.equals(folder.id) || EntityFolder.OUTBOX.equals(dfolder.type)) {
|
|
|
|
if (dup.folder.equals(folder.id) || outbox) {
|
|
|
|
Log.i(Helper.TAG, folder.name + " found as id=" + dup.id + " uid=" + dup.uid + " msgid=" + msgid);
|
|
|
|
Log.i(Helper.TAG, folder.name + " found as id=" + dup.id + " uid=" + dup.uid + " msgid=" + msgid);
|
|
|
|
dup.folder = folder.id;
|
|
|
|
dup.folder = folder.id;
|
|
|
|
dup.uid = uid;
|
|
|
|
dup.uid = uid;
|
|
|
|
|
|
|
|
if (outbox) // only now the uid is known
|
|
|
|
|
|
|
|
dup.thread = helper.getThreadId(uid);
|
|
|
|
db.message().updateMessage(dup);
|
|
|
|
db.message().updateMessage(dup);
|
|
|
|
message = dup;
|
|
|
|
message = dup;
|
|
|
|
result = -1;
|
|
|
|
result = -1;
|
|
|
|