From a13c296f1a79304e3aa99f1f8c604978c6e7fac9 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 12 Sep 2021 21:35:19 +0200 Subject: [PATCH] Added workaround for Seznam server bug --- app/src/main/java/eu/faircode/email/Core.java | 56 ++++++++++--------- .../java/eu/faircode/email/EntityAccount.java | 4 ++ 2 files changed, 34 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 6c247a1ea9..84c5de8004 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -1285,38 +1285,42 @@ class Core { Log.i(folder.name + " " + (duplicate ? "copy" : "move") + " from " + folder.type + " to " + target.type); - List icopies = new ArrayList<>(); - for (Message imessage : map.keySet()) { - EntityMessage message = map.get(imessage); + if (!duplicate && account.isSeznam()) + ifolder.copyMessages(map.keySet().toArray(new Message[0]), itarget); + else { + List icopies = new ArrayList<>(); + for (Message imessage : map.keySet()) { + EntityMessage message = map.get(imessage); - File file = File.createTempFile("draft", "." + message.id, context.getCacheDir()); - try (OutputStream os = new BufferedOutputStream(new FileOutputStream(file))) { - imessage.writeTo(os); - } + File file = File.createTempFile("draft", "." + message.id, context.getCacheDir()); + try (OutputStream os = new BufferedOutputStream(new FileOutputStream(file))) { + imessage.writeTo(os); + } - Properties props = MessageHelper.getSessionProperties(); - Session isession = Session.getInstance(props, null); - - Message icopy; - try (InputStream is = new BufferedInputStream(new FileInputStream(file))) { - if (duplicate) { - String msgid = EntityMessage.generateMessageId(); - msgids.put(message, msgid); - icopy = new MimeMessageEx(isession, is, msgid); - icopy.saveChanges(); - } else - icopy = new MimeMessage(isession, is); - } + Properties props = MessageHelper.getSessionProperties(); + Session isession = Session.getInstance(props, null); + + Message icopy; + try (InputStream is = new BufferedInputStream(new FileInputStream(file))) { + if (duplicate) { + String msgid = EntityMessage.generateMessageId(); + msgids.put(message, msgid); + icopy = new MimeMessageEx(isession, is, msgid); + icopy.saveChanges(); + } else + icopy = new MimeMessage(isession, is); + } - file.delete(); + file.delete(); - for (Flags.Flag flag : imessage.getFlags().getSystemFlags()) - icopy.setFlag(flag, true); + for (Flags.Flag flag : imessage.getFlags().getSystemFlags()) + icopy.setFlag(flag, true); - icopies.add(icopy); - } + icopies.add(icopy); + } - itarget.appendMessages(icopies.toArray(new Message[0])); + itarget.appendMessages(icopies.toArray(new Message[0])); + } } else { for (Message imessage : map.keySet()) { Log.i((copy ? "Copy" : "Move") + " seen=" + seen + " unflag=" + unflag + " flags=" + imessage.getFlags() + " can=" + canMove); diff --git a/app/src/main/java/eu/faircode/email/EntityAccount.java b/app/src/main/java/eu/faircode/email/EntityAccount.java index d249fb4d80..82dc5cfb7d 100644 --- a/app/src/main/java/eu/faircode/email/EntityAccount.java +++ b/app/src/main/java/eu/faircode/email/EntityAccount.java @@ -162,6 +162,10 @@ public class EntityAccount extends EntityOrder implements Serializable { return "imap.mail.yahoo.co.jp".equalsIgnoreCase(host); } + boolean isSeznam() { + return "imap.seznam.cz".equalsIgnoreCase(host); + } + boolean isTransient(Context context) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); boolean enabled = prefs.getBoolean("enabled", true);