Fetch account folders list via email service

pull/214/head
M66B 2 years ago
parent c9ce045169
commit e5f89e4d90

@ -69,7 +69,6 @@ import androidx.preference.PreferenceManager;
import com.google.android.material.snackbar.Snackbar; import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.textfield.TextInputLayout; import com.google.android.material.textfield.TextInputLayout;
import com.sun.mail.imap.IMAPFolder;
import org.json.JSONObject; import org.json.JSONObject;
@ -82,8 +81,6 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import javax.mail.Folder;
public class FragmentAccount extends FragmentBase { public class FragmentAccount extends FragmentBase {
private ViewGroup view; private ViewGroup view;
private ScrollView scroll; private ScrollView scroll;
@ -834,31 +831,11 @@ public class FragmentAccount extends FragmentBase {
iservice.hasCapability("UTF8=ACCEPT") || iservice.hasCapability("UTF8=ACCEPT") ||
iservice.hasCapability("UTF8=ONLY"); iservice.hasCapability("UTF8=ONLY");
for (Folder ifolder : iservice.getStore().getDefaultFolder().list("*")) { for (EntityFolder f : iservice.getFolders()) {
// Check folder attributes EntityFolder folder = db.folder().getFolderByName(id, f.name);
String fullName = ifolder.getFullName();
String[] attrs = ((IMAPFolder) ifolder).getAttributes();
Log.i(fullName + " attrs=" + TextUtils.join(" ", attrs));
String type = EntityFolder.getType(attrs, fullName, true);
boolean selectable = true;
for (String attr : attrs)
if (attr.equalsIgnoreCase("\\NoSelect")) {
selectable = false;
break;
}
selectable = selectable && ((ifolder.getType() & IMAPFolder.HOLDS_MESSAGES) != 0);
if (type != null && selectable) {
// Create entry
EntityFolder folder = db.folder().getFolderByName(id, fullName);
if (folder == null) if (folder == null)
folder = new EntityFolder(fullName, type); folder = new EntityFolder(f.name, f.type);
result.folders.add(folder); result.folders.add(folder);
Log.i(folder.name + " id=" + folder.id +
" type=" + folder.type + " attr=" + TextUtils.join(",", attrs));
}
} }
EntityFolder.guessTypes(result.folders); EntityFolder.guessTypes(result.folders);
@ -1259,17 +1236,11 @@ public class FragmentAccount extends FragmentBase {
user, password, user, password,
certificate, fingerprint); certificate, fingerprint);
for (Folder ifolder : iservice.getStore().getDefaultFolder().list("*")) { for (EntityFolder f : iservice.getFolders())
// Check folder attributes if (EntityFolder.INBOX.equals(f.type)) {
String fullName = ifolder.getFullName();
String[] attrs = ((IMAPFolder) ifolder).getAttributes();
Log.i(fullName + " attrs=" + TextUtils.join(" ", attrs));
String type = EntityFolder.getType(attrs, fullName, true);
if (EntityFolder.INBOX.equals(type)) {
inbox = new EntityFolder(); inbox = new EntityFolder();
inbox.name = fullName; inbox.name = f.name;
inbox.type = type; inbox.type = f.type;
inbox.synchronize = true; inbox.synchronize = true;
inbox.unified = true; inbox.unified = true;
inbox.notify = true; inbox.notify = true;
@ -1278,7 +1249,6 @@ public class FragmentAccount extends FragmentBase {
} }
} }
} }
}
boolean reschedule = (ignore_schedule != jconditions.optBoolean("ignore_schedule")); boolean reschedule = (ignore_schedule != jconditions.optBoolean("ignore_schedule"));

Loading…
Cancel
Save