Added auto repair folders

This commit is contained in:
M66B 2021-10-04 16:43:08 +02:00
parent e312905327
commit de0b30dbd5
1 changed files with 46 additions and 1 deletions

View File

@ -44,6 +44,7 @@ import androidx.work.WorkManager;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@ -521,7 +522,8 @@ public class ApplicationEx extends Application
} else if (version < 1721) {
if (!prefs.contains("discard_delete"))
editor.putBoolean("discard_delete", false);
}
} else if (version < 1753)
repairFolders(context);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && !BuildConfig.DEBUG)
editor.remove("background_service");
@ -533,6 +535,49 @@ public class ApplicationEx extends Application
editor.apply();
}
static void repairFolders(Context context) {
new Thread(new Runnable() {
@Override
public void run() {
try {
Log.i("Repair folders");
DB db = DB.getInstance(context);
List<EntityAccount> accounts = db.account().getAccounts();
if (accounts == null)
return;
for (EntityAccount account : accounts) {
if (account.protocol != EntityAccount.TYPE_IMAP)
continue;
EntityFolder inbox = db.folder().getFolderByType(account.id, EntityFolder.INBOX);
if (inbox == null || !inbox.synchronize) {
List<EntityFolder> folders = db.folder().getFolders(account.id, false, false);
if (folders == null)
continue;
for (EntityFolder folder : folders) {
if (inbox == null && "inbox".equalsIgnoreCase(folder.name))
folder.type = EntityFolder.INBOX;
if (!EntityFolder.USER.equals(folder.type) &&
!EntityFolder.SYSTEM.equals(folder.type)) {
EntityLog.log(context, "Repairing " + account.name + ":" + folder.type);
folder.setProperties();
folder.setSpecials(account);
db.folder().updateFolder(folder);
}
}
}
}
} catch (Throwable ex) {
Log.e(ex);
}
}
}).start();
}
private final ActivityLifecycleCallbacks lifecycleCallbacks = new ActivityLifecycleCallbacks() {
private long last = 0;