Added fail-safe

pull/207/head
M66B 3 years ago
parent c73b490dd7
commit 4f60205d66

@ -225,19 +225,23 @@ public class WorkerCleanup extends Worker {
// Cleanup message files // Cleanup message files
Log.i("Cleanup message files"); Log.i("Cleanup message files");
for (File file : files) for (File file : files)
if (manual || file.lastModified() + KEEP_FILES_DURATION < now) { if (manual || file.lastModified() + KEEP_FILES_DURATION < now)
String name = file.getName().split("\\.")[0]; try {
int us = name.indexOf('_'); String name = file.getName().split("\\.")[0];
if (us > 0) int us = name.indexOf('_');
name = name.substring(0, us); if (us > 0)
long id = Long.parseLong(name); name = name.substring(0, us);
EntityMessage message = db.message().getMessage(id); long id = Long.parseLong(name);
if (message == null || !message.content) { EntityMessage message = db.message().getMessage(id);
Log.i("Deleting " + file); if (message == null || !message.content) {
if (!file.delete()) Log.i("Deleting " + file);
Log.w("Error deleting " + file); if (!file.delete())
Log.w("Error deleting " + file);
}
} catch (NumberFormatException ex) {
Log.e(file.getAbsolutePath(), ex);
file.delete();
} }
}
// Cleanup raw message files // Cleanup raw message files
if (!download_eml) { if (!download_eml) {
@ -245,22 +249,26 @@ public class WorkerCleanup extends Worker {
File[] raws = new File(context.getFilesDir(), "raw").listFiles(); File[] raws = new File(context.getFilesDir(), "raw").listFiles();
if (raws != null) if (raws != null)
for (File file : raws) for (File file : raws)
if (manual || file.lastModified() + KEEP_FILES_DURATION < now) { if (manual || file.lastModified() + KEEP_FILES_DURATION < now)
long id = Long.parseLong(file.getName().split("\\.")[0]); try {
EntityMessage message = db.message().getMessage(id); long id = Long.parseLong(file.getName().split("\\.")[0]);
if (manual && cleanup_attachments && message != null) { EntityMessage message = db.message().getMessage(id);
EntityAccount account = db.account().getAccount(message.account); if (manual && cleanup_attachments && message != null) {
if (account != null && account.protocol == EntityAccount.TYPE_IMAP) { EntityAccount account = db.account().getAccount(message.account);
message.raw = false; if (account != null && account.protocol == EntityAccount.TYPE_IMAP) {
db.message().setMessageRaw(message.id, message.raw); message.raw = false;
db.message().setMessageRaw(message.id, message.raw);
}
} }
if (message == null || message.raw == null || !message.raw) {
Log.i("Deleting " + file);
if (!file.delete())
Log.w("Error deleting " + file);
}
} catch (NumberFormatException ex) {
Log.e(file.getAbsolutePath(), ex);
file.delete();
} }
if (message == null || message.raw == null || !message.raw) {
Log.i("Deleting " + file);
if (!file.delete())
Log.w("Error deleting " + file);
}
}
} }
// Cleanup attachment files // Cleanup attachment files
@ -268,31 +276,39 @@ public class WorkerCleanup extends Worker {
File[] attachments = new File(context.getFilesDir(), "attachments").listFiles(); File[] attachments = new File(context.getFilesDir(), "attachments").listFiles();
if (attachments != null) if (attachments != null)
for (File file : attachments) for (File file : attachments)
if (manual || file.lastModified() + KEEP_FILES_DURATION < now) { if (manual || file.lastModified() + KEEP_FILES_DURATION < now)
long id = Long.parseLong(file.getName().split("\\.")[0]); try {
EntityAttachment attachment = db.attachment().getAttachment(id); long id = Long.parseLong(file.getName().split("\\.")[0]);
if (attachment == null || !attachment.available) { EntityAttachment attachment = db.attachment().getAttachment(id);
Log.i("Deleting " + file); if (attachment == null || !attachment.available) {
if (!file.delete()) Log.i("Deleting " + file);
Log.w("Error deleting " + file); if (!file.delete())
Log.w("Error deleting " + file);
}
} catch (NumberFormatException ex) {
Log.e(file.getAbsolutePath(), ex);
file.delete();
} }
}
// Cleanup cached images // Cleanup cached images
Log.i("Cleanup cached image files"); Log.i("Cleanup cached image files");
File[] images = new File(context.getCacheDir(), "images").listFiles(); File[] images = new File(context.getCacheDir(), "images").listFiles();
if (images != null) if (images != null)
for (File file : images) for (File file : images)
if (manual || file.lastModified() + KEEP_FILES_DURATION < now) { if (manual || file.lastModified() + KEEP_FILES_DURATION < now)
long id = Long.parseLong(file.getName().split("[_\\.]")[0]); try {
EntityMessage message = db.message().getMessage(id); long id = Long.parseLong(file.getName().split("[_\\.]")[0]);
if (manual || message == null || EntityMessage message = db.message().getMessage(id);
file.lastModified() + KEEP_IMAGES_DURATION < now) { if (manual || message == null ||
Log.i("Deleting " + file); file.lastModified() + KEEP_IMAGES_DURATION < now) {
if (!file.delete()) Log.i("Deleting " + file);
Log.w("Error deleting " + file); if (!file.delete())
Log.w("Error deleting " + file);
}
} catch (NumberFormatException ex) {
Log.e(file.getAbsolutePath(), ex);
file.delete();
} }
}
// Cleanup shared files // Cleanup shared files
File[] shared = new File(context.getCacheDir(), "shared").listFiles(); File[] shared = new File(context.getCacheDir(), "shared").listFiles();

Loading…
Cancel
Save