mirror of
https://github.com/M66B/FairEmail.git
synced 2025-02-24 23:12:55 +00:00
Split local/remote folder sync
This commit is contained in:
parent
2585b089a4
commit
971fa5f0ef
1 changed files with 16 additions and 12 deletions
|
@ -653,10 +653,21 @@ class Core {
|
||||||
static void onSynchronizeFolders(Context context, EntityAccount account, Store istore, State state) throws MessagingException {
|
static void onSynchronizeFolders(Context context, EntityAccount account, Store istore, State state) throws MessagingException {
|
||||||
DB db = DB.getInstance(context);
|
DB db = DB.getInstance(context);
|
||||||
try {
|
try {
|
||||||
db.beginTransaction();
|
|
||||||
|
|
||||||
Log.i("Start sync folders account=" + account.name);
|
Log.i("Start sync folders account=" + account.name);
|
||||||
|
|
||||||
|
// Get remote folders
|
||||||
|
Folder defaultFolder = istore.getDefaultFolder();
|
||||||
|
char separator = defaultFolder.getSeparator();
|
||||||
|
EntityLog.log(context, account.name + " folder separator=" + separator);
|
||||||
|
|
||||||
|
Folder[] ifolders = defaultFolder.list("*");
|
||||||
|
Map<Folder, String[]> attrs = new HashMap<>();
|
||||||
|
for (Folder ifolder : ifolders)
|
||||||
|
attrs.put(ifolder, ((IMAPFolder) ifolder).getAttributes());
|
||||||
|
Log.i("Remote folder count=" + ifolders.length + " separator=" + separator);
|
||||||
|
|
||||||
|
db.beginTransaction();
|
||||||
|
|
||||||
List<String> names = new ArrayList<>();
|
List<String> names = new ArrayList<>();
|
||||||
for (EntityFolder folder : db.folder().getFolders(account.id))
|
for (EntityFolder folder : db.folder().getFolders(account.id))
|
||||||
if (folder.tbc != null) {
|
if (folder.tbc != null) {
|
||||||
|
@ -675,22 +686,15 @@ class Core {
|
||||||
names.add(folder.name);
|
names.add(folder.name);
|
||||||
Log.i("Local folder count=" + names.size());
|
Log.i("Local folder count=" + names.size());
|
||||||
|
|
||||||
Folder defaultFolder = istore.getDefaultFolder();
|
|
||||||
char separator = defaultFolder.getSeparator();
|
|
||||||
EntityLog.log(context, account.name + " folder separator=" + separator);
|
|
||||||
|
|
||||||
Folder[] ifolders = defaultFolder.list("*");
|
|
||||||
Log.i("Remote folder count=" + ifolders.length + " separator=" + separator);
|
|
||||||
|
|
||||||
Map<String, EntityFolder> nameFolder = new HashMap<>();
|
Map<String, EntityFolder> nameFolder = new HashMap<>();
|
||||||
Map<String, List<EntityFolder>> parentFolders = new HashMap<>();
|
Map<String, List<EntityFolder>> parentFolders = new HashMap<>();
|
||||||
for (Folder ifolder : ifolders) {
|
for (Folder ifolder : ifolders) {
|
||||||
String fullName = ifolder.getFullName();
|
String fullName = ifolder.getFullName();
|
||||||
String[] attrs = ((IMAPFolder) ifolder).getAttributes();
|
String[] attr = attrs.get(ifolder);
|
||||||
String type = EntityFolder.getType(attrs, fullName);
|
String type = EntityFolder.getType(attr, fullName);
|
||||||
|
|
||||||
EntityLog.log(context, account.name + ":" + fullName +
|
EntityLog.log(context, account.name + ":" + fullName +
|
||||||
" attrs=" + TextUtils.join(" ", attrs) + " type=" + type);
|
" attrs=" + TextUtils.join(" ", attr) + " type=" + type);
|
||||||
|
|
||||||
if (type != null) {
|
if (type != null) {
|
||||||
names.remove(fullName);
|
names.remove(fullName);
|
||||||
|
|
Loading…
Reference in a new issue