From a89b1175354fdd341e551079bc3e0f152ab2334d Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 20 Apr 2022 15:25:47 +0200 Subject: [PATCH] Improved auto create folders --- .../eu/faircode/email/FragmentQuickSetup.java | 79 +++++++++++++++---- 1 file changed, 65 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java b/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java index fa68de9a32..3ed3ba61f7 100644 --- a/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java @@ -399,20 +399,71 @@ public class FragmentQuickSetup extends FragmentBase { folders = iservice.getFolders(); - if (folders.size() == 1 && - EntityFolder.INBOX.equals(folders.get(0).type)) - try { - Log.i("Creating system folders"); - Store istore = iservice.getStore(); - istore.getFolder(EntityFolder.DRAFTS).create(Folder.HOLDS_FOLDERS); - istore.getFolder(EntityFolder.SENT).create(Folder.HOLDS_FOLDERS); - istore.getFolder(EntityFolder.ARCHIVE).create(Folder.HOLDS_FOLDERS); - istore.getFolder(EntityFolder.TRASH).create(Folder.HOLDS_FOLDERS); - istore.getFolder(EntityFolder.JUNK).create(Folder.HOLDS_FOLDERS); - folders = iservice.getFolders(); - } catch (Throwable ex) { - Log.e(ex); - } + if (!check) { + boolean drafts = false; + boolean sent = false; + boolean archive = false; + boolean trash = false; + boolean junk = false; + boolean other = false; + for (EntityFolder folder : folders) + switch (folder.type) { + case EntityFolder.DRAFTS: + drafts = true; + break; + case EntityFolder.SENT: + sent = true; + break; + case EntityFolder.ARCHIVE: + archive = true; + break; + case EntityFolder.TRASH: + trash = true; + break; + case EntityFolder.JUNK: + junk = true; + break; + default: + other = true; + break; + } + + if (!other && !(drafts && sent && archive && trash && junk)) + try { + Store istore = iservice.getStore(); + + String n = ""; + Folder[] ns = istore.getPersonalNamespaces(); + if (ns != null && ns.length == 1) { + n = ns[0].getFullName(); + if (!TextUtils.isEmpty(n)) + n += ns[0].getSeparator(); + } + + Log.i("Creating system folders" + + " namespace=" + n + + " drafts=" + drafts + + " sent=" + sent + + " archive=" + archive + + " trash=" + trash + + " junk=" + junk); + + if (!drafts) + istore.getFolder(n + EntityFolder.DRAFTS).create(Folder.HOLDS_MESSAGES); + if (!sent) + istore.getFolder(n + EntityFolder.SENT).create(Folder.HOLDS_MESSAGES); + if (!archive) + istore.getFolder(n + EntityFolder.ARCHIVE).create(Folder.HOLDS_MESSAGES); + if (!trash) + istore.getFolder(n + EntityFolder.TRASH).create(Folder.HOLDS_MESSAGES); + if (!junk) + istore.getFolder(n + EntityFolder.JUNK).create(Folder.HOLDS_MESSAGES); + + folders = iservice.getFolders(); + } catch (Throwable ex) { + Log.e(ex); + } + } } Long max_size;