From c468068603e80145a6104408bd983e3bd642dee4 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 16 Oct 2021 20:37:04 +0200 Subject: [PATCH] Confirm repair --- .../faircode/email/FragmentOptionsMisc.java | 109 ++++++++++-------- 1 file changed, 62 insertions(+), 47 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index c747236958..0943c41396 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -632,58 +632,73 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc btnRepair.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - new SimpleTask() { - @Override - protected void onPostExecute(Bundle args) { - prefs.edit().remove("debug").apply(); - ToastEx.makeText(v.getContext(), R.string.title_completed, Toast.LENGTH_LONG).show(); - } + new AlertDialog.Builder(view.getContext()) + .setTitle(R.string.title_advanced_repair) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + new SimpleTask() { + @Override + protected void onPostExecute(Bundle args) { + prefs.edit().remove("debug").apply(); + ToastEx.makeText(v.getContext(), R.string.title_completed, Toast.LENGTH_LONG).show(); + } - @Override - protected Void onExecute(Context context, Bundle args) throws Throwable { - DB db = DB.getInstance(context); + @Override + protected Void onExecute(Context context, Bundle args) throws Throwable { + DB db = DB.getInstance(context); + + List accounts = db.account().getAccounts(); + if (accounts == null) + return null; + + for (EntityAccount account : accounts) { + if (account.protocol != EntityAccount.TYPE_IMAP) + continue; + + List folders = db.folder().getFolders(account.id, false, false); + if (folders == null) + continue; + + EntityFolder inbox = db.folder().getFolderByType(account.id, EntityFolder.INBOX); + 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); + } + } + } + + return null; + } - List accounts = db.account().getAccounts(); - if (accounts == null) - return null; + @Override + protected void onExecuted(Bundle args, Void data) { + ServiceSynchronize.reload(v.getContext(), null, true, "repair"); + } - for (EntityAccount account : accounts) { - if (account.protocol != EntityAccount.TYPE_IMAP) - continue; - - List folders = db.folder().getFolders(account.id, false, false); - if (folders == null) - continue; - - EntityFolder inbox = db.folder().getFolderByType(account.id, EntityFolder.INBOX); - 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); - } + @Override + protected void onException(Bundle args, Throwable ex) { + Log.unexpectedError(getParentFragmentManager(), ex); + } + }.execute(FragmentOptionsMisc.this, new Bundle(), "repair"); } - } - - return null; - } - - @Override - protected void onExecuted(Bundle args, Void data) { - ServiceSynchronize.reload(v.getContext(), null, true, "repair"); - } - - @Override - protected void onException(Bundle args, Throwable ex) { - Log.unexpectedError(getParentFragmentManager(), ex); - } - }.execute(FragmentOptionsMisc.this, new Bundle(), "repair"); + }) + .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + // Do nothing + } + }) + .show(); } + }); swAutostart.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {