Improved folder deletion

pull/212/head
M66B 3 years ago
parent cf131f0682
commit fe783a0799

@ -2295,7 +2295,9 @@ class Core {
EntityLog.log(context, folder.name + " creating"); EntityLog.log(context, folder.name + " creating");
Folder ifolder = istore.getFolder(folder.name); Folder ifolder = istore.getFolder(folder.name);
if (!ifolder.exists()) if (ifolder.exists())
EntityLog.log(context, folder.name + " already exists on server");
else
try { try {
((IMAPFolder) ifolder).doCommand(new IMAPFolder.ProtocolCommand() { ((IMAPFolder) ifolder).doCommand(new IMAPFolder.ProtocolCommand() {
@Override @Override
@ -2357,16 +2359,29 @@ class Core {
EntityLog.log(context, folder.name + " deleting server"); EntityLog.log(context, folder.name + " deleting server");
Folder ifolder = istore.getFolder(folder.name); Folder ifolder = istore.getFolder(folder.name);
if (ifolder.exists()) { if (ifolder.exists()) {
try {
ifolder.setSubscribed(false); ifolder.setSubscribed(false);
ifolder.delete(false); ((IMAPFolder) ifolder).doCommand(new IMAPFolder.ProtocolCommand() {
@Override
public Object doCommand(IMAPProtocol protocol) throws ProtocolException {
protocol.delete(folder.name);
return null;
} }
});
EntityLog.log(context, folder.name + " deleting device"); EntityLog.log(context, folder.name + " deleting device");
db.folder().deleteFolder(folder.id); db.folder().deleteFolder(folder.id);
} catch (MessagingException ex) {
Log.w(ex);
EntityLog.log(context, folder.name + " deletion " +
ex + "\n" + android.util.Log.getStackTraceString(ex));
db.account().setAccountError(account.id, Log.formatThrowable(ex));
}
} else
EntityLog.log(context, folder.name + " does not exist on server anymore");
} finally { } finally {
db.folder().resetFolderTbd(folder.id); db.folder().resetFolderTbd(folder.id);
sync_folders = true; sync_folders = true;
} }
EntityLog.log(context, folder.name + " deleted");
} else { } else {
if (EntityFolder.DRAFTS.equals(folder.type)) if (EntityFolder.DRAFTS.equals(folder.type))

Loading…
Cancel
Save