From e8eb7333039c03f627e469ba33a13f810c0fa0f2 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 25 Oct 2021 19:38:54 +0200 Subject: [PATCH] Prevent too long \Delete command --- app/src/main/java/eu/faircode/email/Core.java | 14 ++++++++++---- .../eu/faircode/email/FragmentOptionsMisc.java | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index e095aa91e3..b4e487b91d 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -137,7 +137,7 @@ import javax.mail.search.SentDateTerm; import me.leolin.shortcutbadger.ShortcutBadger; class Core { - static final int DEFAULT_SYNC_CHUNCK_SIZE = 100; + static final int DEFAULT_CHUNCK_SIZE = 100; private static final int MAX_NOTIFICATION_DISPLAY = 10; // per group private static final int MAX_NOTIFICATION_COUNT = 100; // per group @@ -2394,8 +2394,14 @@ class Core { if (account.isYahooJp()) { for (Message imessage : idelete) imessage.setFlag(Flags.Flag.DELETED, true); - } else - ifolder.setFlags(idelete.toArray(new Message[0]), new Flags(Flags.Flag.DELETED), true); + } else { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + int chunk_size = prefs.getInt("chunk_size", DEFAULT_CHUNCK_SIZE); + + Flags flags = new Flags(Flags.Flag.DELETED); + for (List list : Helper.chunkList(idelete, chunk_size)) + ifolder.setFlags(list.toArray(new Message[0]), flags, true); + } Log.i(folder.name + " purge deleted"); expunge(context, ifolder, idelete); } catch (Throwable ex) { @@ -3118,7 +3124,7 @@ class Core { ranges.add(new Pair<>(first, last < 0 ? first : last)); // https://datatracker.ietf.org/doc/html/rfc2683#section-3.2.1.5 - int chunk_size = prefs.getInt("chunk_size", DEFAULT_SYNC_CHUNCK_SIZE); + int chunk_size = prefs.getInt("chunk_size", DEFAULT_CHUNCK_SIZE); if (chunk_size < 200 && (account.isGmail() || account.isOutlook())) chunk_size = 200; diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index c5374232f7..b6bac8b9e0 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -1332,7 +1332,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc Helper.humanReadableByteCount(cache_size * 1024L))); sbSqliteCache.setProgress(sqlite_cache); - int chunk_size = prefs.getInt("chunk_size", Core.DEFAULT_SYNC_CHUNCK_SIZE); + int chunk_size = prefs.getInt("chunk_size", Core.DEFAULT_CHUNCK_SIZE); tvChunkSize.setText(getString(R.string.title_advanced_chunk_size, chunk_size)); sbChunkSize.setProgress(chunk_size);