Handle add without message ID

pull/156/head
M66B 6 years ago
parent bb9a634a07
commit 9a9a55b3bf

@ -450,9 +450,6 @@ class Core {
boolean across = (jargs.length() > 2 && jargs.getBoolean(2)); boolean across = (jargs.length() > 2 && jargs.getBoolean(2));
try { try {
if (TextUtils.isEmpty(message.msgid))
throw new IllegalArgumentException("Message ID missing");
if (EntityFolder.DRAFTS.equals(folder.type) && if (EntityFolder.DRAFTS.equals(folder.type) &&
!folder.id.equals(message.folder) && !folder.id.equals(message.folder) &&
!across) { !across) {
@ -465,13 +462,28 @@ class Core {
// Prevent adding/deleting message // Prevent adding/deleting message
db.message().setMessageUid(message.id, message.uid == null ? -1L : -message.uid); db.message().setMessageUid(message.id, message.uid == null ? -1L : -message.uid);
Message[] ideletes = ifolder.search(new MessageIDTerm(message.msgid)); if (TextUtils.isEmpty(message.msgid)) {
for (Message idelete : ideletes) { // Draft might be created somewhere else
long uid = ifolder.getUID(idelete); if (message.uid == null)
Log.i(folder.name + " deleting previous uid=" + uid + " msgid=" + message.msgid); throw new IllegalArgumentException("Add without ID");
try { else {
idelete.setFlag(Flags.Flag.DELETED, true); Message idelete = ifolder.getMessageByUID(message.uid);
} catch (MessageRemovedException ignored) { Log.i(folder.name + " deleting previous uid=" + message.uid + " msgid=" + message.msgid);
try {
idelete.setFlag(Flags.Flag.DELETED, true);
} catch (MessageRemovedException ignored) {
}
}
message.msgid = EntityMessage.generateMessageId();
} else {
Message[] ideletes = ifolder.search(new MessageIDTerm(message.msgid));
for (Message idelete : ideletes) {
long uid = ifolder.getUID(idelete);
Log.i(folder.name + " deleting previous uid=" + uid + " msgid=" + message.msgid);
try {
idelete.setFlag(Flags.Flag.DELETED, true);
} catch (MessageRemovedException ignored) {
}
} }
} }
ifolder.expunge(); ifolder.expunge();

Loading…
Cancel
Save