mirror of https://github.com/M66B/FairEmail.git
Improved search for standard folders
This commit is contained in:
parent
cf73512897
commit
4ada1dba5d
|
@ -54,20 +54,20 @@ public class EntityFolder {
|
||||||
static final String TYPE_SENT = "Sent";
|
static final String TYPE_SENT = "Sent";
|
||||||
static final String TYPE_USER = "User";
|
static final String TYPE_USER = "User";
|
||||||
|
|
||||||
static final List<String> STANDARD_FOLDER_ATTR = Arrays.asList(
|
static final List<String> SYSTEM_FOLDER_ATTR = Arrays.asList(
|
||||||
"All",
|
"All",
|
||||||
"Drafts",
|
"Drafts",
|
||||||
"Trash",
|
"Trash",
|
||||||
"Junk",
|
"Junk",
|
||||||
"Sent"
|
"Sent"
|
||||||
);
|
);
|
||||||
static final List<String> STANDARD_FOLDER_TYPE = Arrays.asList(
|
static final List<String> SYSTEM_FOLDER_TYPE = Arrays.asList(
|
||||||
TYPE_ARCHIVE,
|
TYPE_ARCHIVE,
|
||||||
TYPE_DRAFTS,
|
TYPE_DRAFTS,
|
||||||
TYPE_TRASH,
|
TYPE_TRASH,
|
||||||
TYPE_JUNK,
|
TYPE_JUNK,
|
||||||
TYPE_SENT
|
TYPE_SENT
|
||||||
); // Must match STANDARD_FOLDER_ATTR
|
); // Must match SYSTEM_FOLDER_ATTR
|
||||||
|
|
||||||
static boolean isOutgoing(String type) {
|
static boolean isOutgoing(String type) {
|
||||||
return (TYPE_OUTBOX.equals(type) || TYPE_DRAFTS.equals(type) || TYPE_SENT.equals(type));
|
return (TYPE_OUTBOX.equals(type) || TYPE_DRAFTS.equals(type) || TYPE_SENT.equals(type));
|
||||||
|
|
|
@ -218,30 +218,49 @@ public class FragmentAccount extends Fragment {
|
||||||
if (!istore.hasCapability("IDLE"))
|
if (!istore.hasCapability("IDLE"))
|
||||||
throw new MessagingException(getContext().getString(R.string.title_no_idle));
|
throw new MessagingException(getContext().getString(R.string.title_no_idle));
|
||||||
|
|
||||||
|
// Find system folders
|
||||||
boolean drafts = false;
|
boolean drafts = false;
|
||||||
for (Folder ifolder : istore.getDefaultFolder().list("*")) {
|
for (Folder ifolder : istore.getDefaultFolder().list("*")) {
|
||||||
|
String type = null;
|
||||||
|
|
||||||
|
// First check folder attributes
|
||||||
String[] attrs = ((IMAPFolder) ifolder).getAttributes();
|
String[] attrs = ((IMAPFolder) ifolder).getAttributes();
|
||||||
for (String attr : attrs) {
|
for (String attr : attrs) {
|
||||||
if (attr.startsWith("\\")) {
|
if (attr.startsWith("\\")) {
|
||||||
int index = EntityFolder.STANDARD_FOLDER_ATTR.indexOf(attr.substring(1));
|
int index = EntityFolder.SYSTEM_FOLDER_ATTR.indexOf(attr.substring(1));
|
||||||
if (index >= 0) {
|
if (index >= 0) {
|
||||||
EntityFolder folder = new EntityFolder();
|
type = EntityFolder.SYSTEM_FOLDER_TYPE.get(index);
|
||||||
folder.name = ifolder.getFullName();
|
|
||||||
folder.type = EntityFolder.STANDARD_FOLDER_TYPE.get(index);
|
|
||||||
folder.synchronize = standard_sync.contains(folder.type);
|
|
||||||
folder.after = DEFAULT_STANDARD_SYNC;
|
|
||||||
folders.add(folder);
|
|
||||||
|
|
||||||
Log.i(Helper.TAG, "Standard folder=" + folder.name +
|
|
||||||
" type=" + folder.type + " attr=" + TextUtils.join(",", attrs));
|
|
||||||
|
|
||||||
if (EntityFolder.TYPE_DRAFTS.equals(folder.type))
|
|
||||||
drafts = true;
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Next check folder full name
|
||||||
|
if (type == null) {
|
||||||
|
String fullname = ifolder.getFullName();
|
||||||
|
for (String attr : EntityFolder.SYSTEM_FOLDER_ATTR)
|
||||||
|
if (attr.equals(fullname)) {
|
||||||
|
int index = EntityFolder.SYSTEM_FOLDER_ATTR.indexOf(attr);
|
||||||
|
type = EntityFolder.SYSTEM_FOLDER_TYPE.get(index);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type != null) {
|
||||||
|
EntityFolder folder = new EntityFolder();
|
||||||
|
folder.name = ifolder.getFullName();
|
||||||
|
folder.type = type;
|
||||||
|
folder.synchronize = standard_sync.contains(folder.type);
|
||||||
|
folder.after = DEFAULT_STANDARD_SYNC;
|
||||||
|
folders.add(folder);
|
||||||
|
|
||||||
|
Log.i(Helper.TAG, account.name +
|
||||||
|
" system=" + folder.name +
|
||||||
|
" type=" + folder.type + " attr=" + TextUtils.join(",", attrs));
|
||||||
|
|
||||||
|
if (EntityFolder.TYPE_DRAFTS.equals(folder.type))
|
||||||
|
drafts = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!drafts) {
|
if (!drafts) {
|
||||||
EntityFolder folder = new EntityFolder();
|
EntityFolder folder = new EntityFolder();
|
||||||
|
|
|
@ -712,7 +712,7 @@ public class ServiceSynchronize extends LifecycleService {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (attr.startsWith("\\"))
|
if (attr.startsWith("\\"))
|
||||||
if (EntityFolder.STANDARD_FOLDER_ATTR.contains(attr.substring(1))) {
|
if (EntityFolder.SYSTEM_FOLDER_ATTR.contains(attr.substring(1))) {
|
||||||
candidate = false;
|
candidate = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue