From d5d373f835ba4b3a5373d2d766939a54be321617 Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 28 May 2019 13:42:19 +0200 Subject: [PATCH] Simplify folder names --- app/src/main/java/eu/faircode/email/Core.java | 22 +++++------- .../java/eu/faircode/email/EmailProvider.java | 8 ----- .../java/eu/faircode/email/EntityAccount.java | 6 +--- .../java/eu/faircode/email/EntityFolder.java | 2 +- .../eu/faircode/email/FragmentAccount.java | 13 ------- .../eu/faircode/email/FragmentQuickSetup.java | 1 - app/src/main/res/layout/fragment_account.xml | 35 ++----------------- app/src/main/res/values/strings.xml | 2 -- app/src/main/res/xml/providers.xml | 1 - 9 files changed, 13 insertions(+), 77 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 679994a255..63f0b33312 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -828,20 +828,21 @@ class Core { Map> parentFolders = new HashMap<>(); for (Folder ifolder : ifolders) { String fullName = ifolder.getFullName(); + String[] name = fullName.split("[" + separator + "]"); + String childName = name[name.length - 1]; boolean subscribed = subscription.contains(fullName); String[] attr = ((IMAPFolder) ifolder).getAttributes(); String type = EntityFolder.getType(attr, fullName); + if (EntityFolder.INBOX.equals(type)) + childName = null; + Log.i(account.name + ":" + fullName + " subscribed=" + subscribed + " type=" + type + " attrs=" + TextUtils.join(" ", attr)); if (type != null) { names.remove(fullName); - String display = null; - if (account.prefix != null && fullName.startsWith(account.prefix + separator)) - display = fullName.substring(account.prefix.length() + 1); - EntityFolder folder; try { db.beginTransaction(); @@ -851,7 +852,7 @@ class Core { folder = new EntityFolder(); folder.account = account.id; folder.name = fullName; - folder.display = display; + folder.display = childName; folder.type = (EntityFolder.SYSTEM.equals(type) ? type : EntityFolder.USER); folder.synchronize = false; folder.subscribed = subscribed; @@ -866,16 +867,11 @@ class Core { if (folder.subscribed == null || !folder.subscribed.equals(subscribed)) db.folder().setFolderSubscribed(folder.id, subscribed); - if (folder.display == null && display != null) { - db.folder().setFolderDisplay(folder.id, display); - EntityLog.log(context, account.name + ":" + folder.name + - " removed prefix display=" + display + " separator=" + separator); - } + if (folder.display == null && childName != null) + db.folder().setFolderDisplay(folder.id, childName); // Compatibility - if ("Inbox_sub".equals(folder.type)) - db.folder().setFolderType(folder.id, EntityFolder.USER); - else if (EntityFolder.USER.equals(folder.type) && EntityFolder.SYSTEM.equals(type)) + if (EntityFolder.USER.equals(folder.type) && EntityFolder.SYSTEM.equals(type)) db.folder().setFolderType(folder.id, type); else if (EntityFolder.SYSTEM.equals(folder.type) && EntityFolder.USER.equals(type)) db.folder().setFolderType(folder.id, type); diff --git a/app/src/main/java/eu/faircode/email/EmailProvider.java b/app/src/main/java/eu/faircode/email/EmailProvider.java index 4e4db985d0..f4e0a5d87c 100644 --- a/app/src/main/java/eu/faircode/email/EmailProvider.java +++ b/app/src/main/java/eu/faircode/email/EmailProvider.java @@ -52,7 +52,6 @@ public class EmailProvider { public int order; public String link; public String type; - public String prefix; public String imap_host; public boolean imap_starttls; public int imap_port; @@ -108,7 +107,6 @@ public class EmailProvider { provider.order = xml.getAttributeIntValue(null, "order", Integer.MAX_VALUE); provider.link = xml.getAttributeValue(null, "link"); provider.type = xml.getAttributeValue(null, "type"); - provider.prefix = xml.getAttributeValue(null, "prefix"); } else if ("imap".equals(name)) { provider.imap_host = xml.getAttributeValue(null, "host"); provider.imap_port = xml.getAttributeIntValue(null, "port", 0); @@ -407,12 +405,6 @@ public class EmailProvider { } private static EmailProvider addSpecials(Context context, EmailProvider provider) { - for (EmailProvider predefined : loadProfiles(context)) - if (provider.imap_host.equals(predefined.imap_host)) { - provider.prefix = predefined.prefix; - break; - } - if ("imap.gmail.com".equals(provider.imap_host)) addDocumentation(provider, "https://www.google.com/settings/security/lesssecureapps", diff --git a/app/src/main/java/eu/faircode/email/EntityAccount.java b/app/src/main/java/eu/faircode/email/EntityAccount.java index 438dcd98b7..18f4e4482b 100644 --- a/app/src/main/java/eu/faircode/email/EntityAccount.java +++ b/app/src/main/java/eu/faircode/email/EntityAccount.java @@ -86,7 +86,7 @@ public class EntityAccount extends EntityOrder implements Serializable { public Long swipe_right; @NonNull public Integer poll_interval; // keep-alive interval - public String prefix; // namespace + public String prefix; // namespace, obsolete public Long created; public Boolean tbd; @@ -156,7 +156,6 @@ public class EntityAccount extends EntityOrder implements Serializable { json.put("swipe_right", swipe_right); json.put("poll_interval", poll_interval); - json.put("prefix", prefix); // not created // not state // not error @@ -197,8 +196,6 @@ public class EntityAccount extends EntityOrder implements Serializable { account.swipe_right = json.getLong("swipe_right"); account.poll_interval = json.getInt("poll_interval"); - if (json.has("prefix") && !json.isNull("prefix")) - account.prefix = json.getString("prefix"); return account; } @@ -225,7 +222,6 @@ public class EntityAccount extends EntityOrder implements Serializable { Objects.equals(this.swipe_left, other.swipe_left) && Objects.equals(this.swipe_right, other.swipe_right) && this.poll_interval.equals(other.poll_interval) && - Objects.equals(this.prefix, other.prefix) && Objects.equals(this.created, other.created) && Objects.equals(this.tbd, other.tbd) && Objects.equals(this.state, other.state) && diff --git a/app/src/main/java/eu/faircode/email/EntityFolder.java b/app/src/main/java/eu/faircode/email/EntityFolder.java index 7e1e551d80..bf19acb7ba 100644 --- a/app/src/main/java/eu/faircode/email/EntityFolder.java +++ b/app/src/main/java/eu/faircode/email/EntityFolder.java @@ -308,7 +308,7 @@ public class EntityFolder extends EntityOrder implements Serializable { @Override public String toString() { - return (display == null ? name : display); + return name; } public JSONObject toJSON() throws JSONException { diff --git a/app/src/main/java/eu/faircode/email/FragmentAccount.java b/app/src/main/java/eu/faircode/email/FragmentAccount.java index f0287ead66..8e558585f8 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccount.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccount.java @@ -118,7 +118,6 @@ public class FragmentAccount extends FragmentBase { private CheckBox cbNotify; private CheckBox cbBrowse; private EditText etInterval; - private EditText etPrefix; private Button btnCheck; private ContentLoadingProgressBar pbCheck; @@ -195,7 +194,6 @@ public class FragmentAccount extends FragmentBase { cbNotify = view.findViewById(R.id.cbNotify); cbBrowse = view.findViewById(R.id.cbBrowse); etInterval = view.findViewById(R.id.etInterval); - etPrefix = view.findViewById(R.id.etPrefix); btnCheck = view.findViewById(R.id.btnCheck); pbCheck = view.findViewById(R.id.pbCheck); @@ -261,7 +259,6 @@ public class FragmentAccount extends FragmentBase { etRealm.setEnabled(true); etName.setText(position > 1 ? provider.name : null); - etPrefix.setText(provider.prefix); grpFolders.setVisibility(View.GONE); btnSave.setVisibility(View.GONE); @@ -762,7 +759,6 @@ public class FragmentAccount extends FragmentBase { args.putBoolean("notify", cbNotify.isChecked()); args.putBoolean("browse", cbBrowse.isChecked()); args.putString("interval", etInterval.getText().toString()); - args.putString("prefix", etPrefix.getText().toString()); args.putSerializable("drafts", drafts); args.putSerializable("sent", sent); @@ -811,7 +807,6 @@ public class FragmentAccount extends FragmentBase { boolean notify = args.getBoolean("notify"); boolean browse = args.getBoolean("browse"); String interval = args.getString("interval"); - String prefix = args.getString("prefix"); EntityFolder drafts = (EntityFolder) args.getSerializable("drafts"); EntityFolder sent = (EntityFolder) args.getSerializable("sent"); @@ -837,8 +832,6 @@ public class FragmentAccount extends FragmentBase { if (Color.TRANSPARENT == color) color = null; - if (TextUtils.isEmpty(prefix)) - prefix = null; Character separator = null; long now = new Date().getTime(); @@ -854,7 +847,6 @@ public class FragmentAccount extends FragmentBase { !user.equals(account.user) || !password.equals(account.password) || !Objects.equals(realm, accountRealm))); boolean reload = (check || account == null || - !Objects.equals(account.prefix, prefix) || account.synchronize != synchronize || account.notify != notify || !account.poll_interval.equals(Integer.parseInt(interval))); @@ -931,7 +923,6 @@ public class FragmentAccount extends FragmentBase { account.notify = notify; account.browse = browse; account.poll_interval = Integer.parseInt(interval); - account.prefix = prefix; if (!update) account.created = now; @@ -1018,9 +1009,6 @@ public class FragmentAccount extends FragmentBase { db.folder().setFoldersUser(account.id); for (EntityFolder folder : folders) { - if (account.prefix != null && folder.name.startsWith(account.prefix + separator)) - folder.display = folder.name.substring(account.prefix.length() + 1); - EntityFolder existing = db.folder().getFolderByName(account.id, folder.name); if (existing == null) { folder.account = account.id; @@ -1143,7 +1131,6 @@ public class FragmentAccount extends FragmentBase { etRealm.setText(account == null ? null : account.realm); etName.setText(account == null ? null : account.name); - etPrefix.setText(account == null ? null : account.prefix); cbNotify.setChecked(account == null ? false : account.notify); cbSynchronize.setChecked(account == null ? true : account.synchronize); diff --git a/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java b/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java index 6e7dcd093a..c4b35f9134 100644 --- a/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java @@ -343,7 +343,6 @@ public class FragmentQuickSetup extends FragmentBase { account.notify = false; account.browse = true; account.poll_interval = EntityAccount.DEFAULT_KEEP_ALIVE_INTERVAL; - account.prefix = provider.prefix; account.created = now; account.error = null; diff --git a/app/src/main/res/layout/fragment_account.xml b/app/src/main/res/layout/fragment_account.xml index 083474fcd2..84a09e5df8 100644 --- a/app/src/main/res/layout/fragment_account.xml +++ b/app/src/main/res/layout/fragment_account.xml @@ -457,37 +457,6 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/etInterval" /> - - - - - -