Loading app/core/src/main/java/com/fsck/k9/controller/MessagingController.java +8 −3 Original line number Diff line number Diff line Loading @@ -1443,14 +1443,16 @@ public class MessagingController { */ public void sendMessage(final Account account, final Message message, String plaintextSubject, MessagingListener listener) { try { LocalStore localStore = account.getLocalStore(); LocalFolder localFolder = localStore.getFolder(account.getOutboxFolder()); localFolder.open(Folder.OPEN_MODE_RW); localFolder.appendMessages(Collections.singletonList(message)); Message localMessage = localFolder.getMessage(message.getUid()); LocalMessage localMessage = localFolder.getMessage(message.getUid()); localMessage.setFlag(Flag.X_DOWNLOADED_FULL, true); localMessage.setCachedDecryptedSubject(plaintextSubject); localFolder.close(); sendPendingMessages(account, listener); } catch (Exception e) { Loading Loading @@ -2760,8 +2762,8 @@ public class MessagingController { * * @return Message representing the entry in the local store. */ public Message saveDraft(final Account account, final Message message, long existingDraftId, boolean saveRemotely) { Message localMessage = null; public Message saveDraft(final Account account, final Message message, long existingDraftId, String plaintextSubject, boolean saveRemotely) { LocalMessage localMessage = null; try { LocalStore localStore = account.getLocalStore(); LocalFolder localFolder = localStore.getFolder(account.getDraftsFolder()); Loading @@ -2777,6 +2779,9 @@ public class MessagingController { // Fetch the message back from the store. This is the Message that's returned to the caller. localMessage = localFolder.getMessage(message.getUid()); localMessage.setFlag(Flag.X_DOWNLOADED_FULL, true); if (plaintextSubject != null) { localMessage.setCachedDecryptedSubject(plaintextSubject); } if (saveRemotely) { PendingCommand command = PendingAppend.create(localFolder.getServerId(), localMessage.getUid()); Loading app/core/src/main/java/com/fsck/k9/message/MessageBuilder.java +4 −0 Original line number Diff line number Diff line Loading @@ -329,6 +329,10 @@ public abstract class MessageBuilder { return this; } public String getSubject() { return subject; } public MessageBuilder setSentDate(Date sentDate) { this.sentDate = sentDate; return this; Loading app/core/src/main/java/com/fsck/k9/message/PgpMessageBuilder.java +0 −4 Original line number Diff line number Diff line Loading @@ -409,10 +409,6 @@ public class PgpMessageBuilder extends MessageBuilder { } private void mimeBuildEncryptedMessage(@NonNull Body encryptedBodyPart) throws MessagingException { if (!cryptoStatus.isEncryptionEnabled()) { throw new IllegalStateException("call to mimeBuildEncryptedMessage while encryption isn't enabled!"); } MimeMultipart multipartEncrypted = createMimeMultipart(); multipartEncrypted.setSubType("encrypted"); multipartEncrypted.addBodyPart(new MimeBodyPart(new TextBody("Version: 1"), "application/pgp-encrypted")); Loading app/ui/src/main/java/com/fsck/k9/activity/MessageCompose.java +9 −4 Original line number Diff line number Diff line Loading @@ -1391,15 +1391,17 @@ public class MessageCompose extends K9Activity implements OnClickListener, final Contacts contacts; final Message message; final Long draftId; final String plaintextSubject; final MessageReference messageReference; SendMessageTask(Context context, Account account, Contacts contacts, Message message, Long draftId, MessageReference messageReference) { Long draftId, String plaintextSubject, MessageReference messageReference) { this.context = context; this.account = account; this.contacts = contacts; this.message = message; this.draftId = draftId; this.plaintextSubject = plaintextSubject; this.messageReference = messageReference; } Loading @@ -1414,7 +1416,7 @@ public class MessageCompose extends K9Activity implements OnClickListener, Timber.e(e, "Failed to mark contact as contacted."); } MessagingController.getInstance(context).sendMessage(account, message, null); MessagingController.getInstance(context).sendMessage(account, message, plaintextSubject, null); if (draftId != null) { // TODO set draft id to invalid in MessageCompose! MessagingController.getInstance(context).deleteDraft(account, draftId); Loading Loading @@ -1506,6 +1508,9 @@ public class MessageCompose extends K9Activity implements OnClickListener, @Override public void onMessageBuildSuccess(MimeMessage message, boolean isDraft) { String plaintextSubject = (currentMessageBuilder instanceof PgpMessageBuilder) ? currentMessageBuilder.getSubject() : null; if (isDraft) { changesMadeSinceLastSave = false; currentMessageBuilder = null; Loading @@ -1515,7 +1520,7 @@ public class MessageCompose extends K9Activity implements OnClickListener, } new SaveMessageTask(getApplicationContext(), account, contacts, internalMessageHandler, message, draftId, true).execute(); message, draftId, plaintextSubject, true).execute(); if (finishAfterDraftSaved) { finish(); } else { Loading @@ -1524,7 +1529,7 @@ public class MessageCompose extends K9Activity implements OnClickListener, } else { currentMessageBuilder = null; new SendMessageTask(getApplicationContext(), account, contacts, message, draftId != INVALID_DRAFT_ID ? draftId : null, relatedMessageReference).execute(); draftId != INVALID_DRAFT_ID ? draftId : null, plaintextSubject, relatedMessageReference).execute(); finish(); } } Loading app/ui/src/main/java/com/fsck/k9/activity/compose/SaveMessageTask.java +4 −2 Original line number Diff line number Diff line Loading @@ -17,23 +17,25 @@ public class SaveMessageTask extends AsyncTask<Void, Void, Void> { Handler handler; Message message; long draftId; String plaintextSubject; boolean saveRemotely; public SaveMessageTask(Context context, Account account, Contacts contacts, Handler handler, Message message, long draftId, boolean saveRemotely) { Handler handler, Message message, long draftId, String plaintextSubject, boolean saveRemotely) { this.context = context; this.account = account; this.contacts = contacts; this.handler = handler; this.message = message; this.draftId = draftId; this.plaintextSubject = plaintextSubject; this.saveRemotely = saveRemotely; } @Override protected Void doInBackground(Void... params) { final MessagingController messagingController = MessagingController.getInstance(context); Message draftMessage = messagingController.saveDraft(account, message, draftId, saveRemotely); Message draftMessage = messagingController.saveDraft(account, message, draftId, plaintextSubject, saveRemotely); draftId = messagingController.getId(draftMessage); android.os.Message msg = android.os.Message.obtain(handler, MessageCompose.MSG_SAVED_DRAFT, draftId); Loading Loading
app/core/src/main/java/com/fsck/k9/controller/MessagingController.java +8 −3 Original line number Diff line number Diff line Loading @@ -1443,14 +1443,16 @@ public class MessagingController { */ public void sendMessage(final Account account, final Message message, String plaintextSubject, MessagingListener listener) { try { LocalStore localStore = account.getLocalStore(); LocalFolder localFolder = localStore.getFolder(account.getOutboxFolder()); localFolder.open(Folder.OPEN_MODE_RW); localFolder.appendMessages(Collections.singletonList(message)); Message localMessage = localFolder.getMessage(message.getUid()); LocalMessage localMessage = localFolder.getMessage(message.getUid()); localMessage.setFlag(Flag.X_DOWNLOADED_FULL, true); localMessage.setCachedDecryptedSubject(plaintextSubject); localFolder.close(); sendPendingMessages(account, listener); } catch (Exception e) { Loading Loading @@ -2760,8 +2762,8 @@ public class MessagingController { * * @return Message representing the entry in the local store. */ public Message saveDraft(final Account account, final Message message, long existingDraftId, boolean saveRemotely) { Message localMessage = null; public Message saveDraft(final Account account, final Message message, long existingDraftId, String plaintextSubject, boolean saveRemotely) { LocalMessage localMessage = null; try { LocalStore localStore = account.getLocalStore(); LocalFolder localFolder = localStore.getFolder(account.getDraftsFolder()); Loading @@ -2777,6 +2779,9 @@ public class MessagingController { // Fetch the message back from the store. This is the Message that's returned to the caller. localMessage = localFolder.getMessage(message.getUid()); localMessage.setFlag(Flag.X_DOWNLOADED_FULL, true); if (plaintextSubject != null) { localMessage.setCachedDecryptedSubject(plaintextSubject); } if (saveRemotely) { PendingCommand command = PendingAppend.create(localFolder.getServerId(), localMessage.getUid()); Loading
app/core/src/main/java/com/fsck/k9/message/MessageBuilder.java +4 −0 Original line number Diff line number Diff line Loading @@ -329,6 +329,10 @@ public abstract class MessageBuilder { return this; } public String getSubject() { return subject; } public MessageBuilder setSentDate(Date sentDate) { this.sentDate = sentDate; return this; Loading
app/core/src/main/java/com/fsck/k9/message/PgpMessageBuilder.java +0 −4 Original line number Diff line number Diff line Loading @@ -409,10 +409,6 @@ public class PgpMessageBuilder extends MessageBuilder { } private void mimeBuildEncryptedMessage(@NonNull Body encryptedBodyPart) throws MessagingException { if (!cryptoStatus.isEncryptionEnabled()) { throw new IllegalStateException("call to mimeBuildEncryptedMessage while encryption isn't enabled!"); } MimeMultipart multipartEncrypted = createMimeMultipart(); multipartEncrypted.setSubType("encrypted"); multipartEncrypted.addBodyPart(new MimeBodyPart(new TextBody("Version: 1"), "application/pgp-encrypted")); Loading
app/ui/src/main/java/com/fsck/k9/activity/MessageCompose.java +9 −4 Original line number Diff line number Diff line Loading @@ -1391,15 +1391,17 @@ public class MessageCompose extends K9Activity implements OnClickListener, final Contacts contacts; final Message message; final Long draftId; final String plaintextSubject; final MessageReference messageReference; SendMessageTask(Context context, Account account, Contacts contacts, Message message, Long draftId, MessageReference messageReference) { Long draftId, String plaintextSubject, MessageReference messageReference) { this.context = context; this.account = account; this.contacts = contacts; this.message = message; this.draftId = draftId; this.plaintextSubject = plaintextSubject; this.messageReference = messageReference; } Loading @@ -1414,7 +1416,7 @@ public class MessageCompose extends K9Activity implements OnClickListener, Timber.e(e, "Failed to mark contact as contacted."); } MessagingController.getInstance(context).sendMessage(account, message, null); MessagingController.getInstance(context).sendMessage(account, message, plaintextSubject, null); if (draftId != null) { // TODO set draft id to invalid in MessageCompose! MessagingController.getInstance(context).deleteDraft(account, draftId); Loading Loading @@ -1506,6 +1508,9 @@ public class MessageCompose extends K9Activity implements OnClickListener, @Override public void onMessageBuildSuccess(MimeMessage message, boolean isDraft) { String plaintextSubject = (currentMessageBuilder instanceof PgpMessageBuilder) ? currentMessageBuilder.getSubject() : null; if (isDraft) { changesMadeSinceLastSave = false; currentMessageBuilder = null; Loading @@ -1515,7 +1520,7 @@ public class MessageCompose extends K9Activity implements OnClickListener, } new SaveMessageTask(getApplicationContext(), account, contacts, internalMessageHandler, message, draftId, true).execute(); message, draftId, plaintextSubject, true).execute(); if (finishAfterDraftSaved) { finish(); } else { Loading @@ -1524,7 +1529,7 @@ public class MessageCompose extends K9Activity implements OnClickListener, } else { currentMessageBuilder = null; new SendMessageTask(getApplicationContext(), account, contacts, message, draftId != INVALID_DRAFT_ID ? draftId : null, relatedMessageReference).execute(); draftId != INVALID_DRAFT_ID ? draftId : null, plaintextSubject, relatedMessageReference).execute(); finish(); } } Loading
app/ui/src/main/java/com/fsck/k9/activity/compose/SaveMessageTask.java +4 −2 Original line number Diff line number Diff line Loading @@ -17,23 +17,25 @@ public class SaveMessageTask extends AsyncTask<Void, Void, Void> { Handler handler; Message message; long draftId; String plaintextSubject; boolean saveRemotely; public SaveMessageTask(Context context, Account account, Contacts contacts, Handler handler, Message message, long draftId, boolean saveRemotely) { Handler handler, Message message, long draftId, String plaintextSubject, boolean saveRemotely) { this.context = context; this.account = account; this.contacts = contacts; this.handler = handler; this.message = message; this.draftId = draftId; this.plaintextSubject = plaintextSubject; this.saveRemotely = saveRemotely; } @Override protected Void doInBackground(Void... params) { final MessagingController messagingController = MessagingController.getInstance(context); Message draftMessage = messagingController.saveDraft(account, message, draftId, saveRemotely); Message draftMessage = messagingController.saveDraft(account, message, draftId, plaintextSubject, saveRemotely); draftId = messagingController.getId(draftMessage); android.os.Message msg = android.os.Message.obtain(handler, MessageCompose.MSG_SAVED_DRAFT, draftId); Loading