Set forwarded flag on cross account move

pull/199/head
M66B 3 years ago
parent ed7fee781f
commit 808fcd4e02

@ -307,8 +307,8 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
// https://www.iana.org/assignments/imap-jmap-keywords/imap-jmap-keywords.xhtml
private static final List<String> IMAP_KEYWORDS_BLACKLIST = Collections.unmodifiableList(Arrays.asList(
MessageHelper.FLAG_FORWARDED.toLowerCase(Locale.ROOT),
"$MDNSent".toLowerCase(Locale.ROOT), // https://tools.ietf.org/html/rfc3503
"$Forwarded".toLowerCase(Locale.ROOT),
"$SubmitPending".toLowerCase(Locale.ROOT),
"$Submitted".toLowerCase(Locale.ROOT),
"$Junk".toLowerCase(Locale.ROOT),
@ -1131,7 +1131,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
ibSnoozed.setVisibility(message.ui_snoozed == null && !message.ui_unsnoozed ? View.GONE : View.VISIBLE);
ivAnswered.setVisibility(message.ui_answered ? View.VISIBLE : View.GONE);
ivForwarded.setVisibility(message.hasKeyword("$Forwarded") ? View.VISIBLE : View.GONE);
ivForwarded.setVisibility(message.isForwarded() ? View.VISIBLE : View.GONE);
ivAttachments.setVisibility(message.attachments > 0 ? View.VISIBLE : View.GONE);
if (viewType == ViewType.FOLDER)

@ -870,7 +870,7 @@ class Core {
throw new IllegalArgumentException("keyword/uid");
if (!ifolder.getPermanentFlags().contains(Flags.Flag.USER)) {
if ("$Forwarded".equals(keyword) && false) {
if (MessageHelper.FLAG_FORWARDED.equals(keyword) && false) {
JSONArray janswered = new JSONArray();
janswered.put(true);
onAnswered(context, janswered, folder, message, ifolder);
@ -1031,10 +1031,21 @@ class Core {
imessage.saveChanges();
imessage.setFlag(Flags.Flag.SEEN, message.ui_seen);
imessage.setFlag(Flags.Flag.ANSWERED, message.ui_answered);
imessage.setFlag(Flags.Flag.FLAGGED, message.ui_flagged);
imessage.setFlag(Flags.Flag.DELETED, message.ui_deleted);
if (flags.contains(Flags.Flag.SEEN))
imessage.setFlag(Flags.Flag.SEEN, message.ui_seen);
if (flags.contains(Flags.Flag.ANSWERED))
imessage.setFlag(Flags.Flag.ANSWERED, message.ui_answered);
if (flags.contains(Flags.Flag.FLAGGED))
imessage.setFlag(Flags.Flag.FLAGGED, message.ui_flagged);
if (flags.contains(Flags.Flag.DELETED))
imessage.setFlag(Flags.Flag.DELETED, message.ui_deleted);
if (flags.contains(Flags.Flag.USER)) {
if (message.isForwarded()) {
Flags fwd = new Flags(MessageHelper.FLAG_FORWARDED);
imessage.setFlags(new Flags(fwd), true);
}
}
}
db.message().setMessageRaw(message.id, true);

@ -300,6 +300,10 @@ public class EntityMessage implements Serializable {
return false;
}
boolean isForwarded() {
return hasKeyword(MessageHelper.FLAG_FORWARDED);
}
String checkReplyDomain(Context context) {
if (from == null || from.length == 0)
return null;

@ -121,6 +121,7 @@ public class MessageHelper {
static final int SMALL_MESSAGE_SIZE = 192 * 1024; // bytes
static final int DEFAULT_DOWNLOAD_SIZE = 4 * 1024 * 1024; // bytes
static final String HEADER_CORRELATION_ID = "X-Correlation-ID";
static final String FLAG_FORWARDED = "$Forwarded";
private static final int MAX_MESSAGE_SIZE = 10 * 1024 * 1024; // bytes
private static final long ATTACHMENT_PROGRESS_UPDATE = 1500L; // milliseconds

@ -714,7 +714,8 @@ public class ServiceSend extends ServiceBase implements SharedPreferences.OnShar
if (message.wasforwardedfrom != null) {
List<EntityMessage> forwardeds = db.message().getMessagesByMsgId(message.account, message.wasforwardedfrom);
for (EntityMessage forwarded : forwardeds)
EntityOperation.queue(this, forwarded, EntityOperation.KEYWORD, "$Forwarded", true);
EntityOperation.queue(this, forwarded,
EntityOperation.KEYWORD, MessageHelper.FLAG_FORWARDED, true);
}
// Update identity

Loading…
Cancel
Save