mirror of
https://github.com/M66B/FairEmail.git
synced 2025-02-24 15:11:03 +00:00
Improved cleanup
This commit is contained in:
parent
091b64f055
commit
3cbc81cb08
3 changed files with 58 additions and 66 deletions
|
@ -38,11 +38,6 @@ public interface DaoAttachment {
|
|||
" WHERE message = :message")
|
||||
int getAttachmentSequence(long message);
|
||||
|
||||
@Query("SELECT COUNT(id)" +
|
||||
" FROM attachment" +
|
||||
" WHERE id = :id")
|
||||
int countAttachment(long id);
|
||||
|
||||
@Query("SELECT * FROM attachment" +
|
||||
" WHERE message = :message" +
|
||||
" ORDER BY sequence")
|
||||
|
@ -83,9 +78,9 @@ public interface DaoAttachment {
|
|||
void setDownloaded(long id, Long size);
|
||||
|
||||
@Query("UPDATE attachment" +
|
||||
" SET size = NULL, progress = NULL, available = 0" +
|
||||
" SET size = NULL, progress = NULL, available = :available" +
|
||||
" WHERE id = :id")
|
||||
void setUnavailable(long id);
|
||||
void setAvailable(long id, boolean available);
|
||||
|
||||
@Query("UPDATE attachment" +
|
||||
" SET error = :error, progress = NULL, available = 0" +
|
||||
|
|
|
@ -177,11 +177,6 @@ public interface DaoMessage {
|
|||
" AND ui_hide <> 0")
|
||||
LiveData<List<Long>> liveHidden(long account, String thread);
|
||||
|
||||
@Query("SELECT COUNT(id)" +
|
||||
" FROM message" +
|
||||
" WHERE id = :id")
|
||||
int countMessage(long id);
|
||||
|
||||
@Query("SELECT *" +
|
||||
" FROM message" +
|
||||
" WHERE id = :id")
|
||||
|
|
|
@ -82,59 +82,6 @@ public class WorkerCleanup extends Worker {
|
|||
" before=" + new Date(keep_time) + " deleted=" + messages);
|
||||
}
|
||||
|
||||
long now = new Date().getTime();
|
||||
|
||||
List<File> files = new ArrayList<>();
|
||||
File[] messages = new File(context.getFilesDir(), "messages").listFiles();
|
||||
File[] revision = new File(context.getFilesDir(), "revision").listFiles();
|
||||
File[] references = new File(context.getFilesDir(), "references").listFiles();
|
||||
File[] raws = new File(context.getFilesDir(), "raw").listFiles();
|
||||
|
||||
if (messages != null)
|
||||
files.addAll(Arrays.asList(messages));
|
||||
if (revision != null)
|
||||
files.addAll(Arrays.asList(revision));
|
||||
if (references != null)
|
||||
files.addAll(Arrays.asList(references));
|
||||
if (raws != null)
|
||||
files.addAll(Arrays.asList(raws));
|
||||
|
||||
// Cleanup message files
|
||||
Log.i("Cleanup message files");
|
||||
for (File file : files) {
|
||||
long id = Long.parseLong(file.getName().split("\\.")[0]);
|
||||
if (db.message().countMessage(id) == 0) {
|
||||
Log.i("Deleting " + file);
|
||||
if (!file.delete())
|
||||
Log.w("Error deleting " + file);
|
||||
}
|
||||
}
|
||||
|
||||
// Cleanup attachment files
|
||||
Log.i("Cleanup attachment files");
|
||||
File[] attachments = new File(context.getFilesDir(), "attachments").listFiles();
|
||||
if (attachments != null)
|
||||
for (File file : attachments) {
|
||||
long id = Long.parseLong(file.getName().split("\\.")[0]);
|
||||
if (db.attachment().countAttachment(id) == 0) {
|
||||
Log.i("Deleting " + file);
|
||||
if (!file.delete())
|
||||
Log.w("Error deleting " + file);
|
||||
}
|
||||
}
|
||||
|
||||
// Cleanup cached images
|
||||
Log.i("Cleanup cached image files");
|
||||
File[] images = new File(context.getCacheDir(), "images").listFiles();
|
||||
if (images != null)
|
||||
for (File file : images)
|
||||
if (file.isFile())
|
||||
if (manual || now - file.lastModified() > CACHE_IMAGE_DURATION) {
|
||||
Log.i("Deleting " + file);
|
||||
if (!file.delete())
|
||||
Log.w("Error deleting " + file);
|
||||
}
|
||||
|
||||
if (manual) {
|
||||
// Check message files
|
||||
Log.i("Checking message files");
|
||||
|
@ -156,11 +103,66 @@ public class WorkerCleanup extends Worker {
|
|||
File file = attachment.getFile(context);
|
||||
if (!file.exists()) {
|
||||
Log.w("Attachment file missing id=" + aid);
|
||||
db.attachment().setUnavailable(aid);
|
||||
db.attachment().setAvailable(aid, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
long now = new Date().getTime();
|
||||
|
||||
List<File> files = new ArrayList<>();
|
||||
File[] messages = new File(context.getFilesDir(), "messages").listFiles();
|
||||
File[] revision = new File(context.getFilesDir(), "revision").listFiles();
|
||||
File[] references = new File(context.getFilesDir(), "references").listFiles();
|
||||
File[] raws = new File(context.getFilesDir(), "raw").listFiles();
|
||||
|
||||
if (messages != null)
|
||||
files.addAll(Arrays.asList(messages));
|
||||
if (revision != null)
|
||||
files.addAll(Arrays.asList(revision));
|
||||
if (references != null)
|
||||
files.addAll(Arrays.asList(references));
|
||||
if (raws != null)
|
||||
files.addAll(Arrays.asList(raws));
|
||||
|
||||
// Cleanup message files
|
||||
Log.i("Cleanup message files");
|
||||
for (File file : files) {
|
||||
long id = Long.parseLong(file.getName().split("\\.")[0]);
|
||||
EntityMessage message = db.message().getMessage(id);
|
||||
if (message == null || !message.content) {
|
||||
Log.i("Deleting " + file);
|
||||
if (!file.delete())
|
||||
Log.w("Error deleting " + file);
|
||||
}
|
||||
}
|
||||
|
||||
// Cleanup attachment files
|
||||
Log.i("Cleanup attachment files");
|
||||
File[] attachments = new File(context.getFilesDir(), "attachments").listFiles();
|
||||
if (attachments != null)
|
||||
for (File file : attachments) {
|
||||
long id = Long.parseLong(file.getName().split("\\.")[0]);
|
||||
EntityAttachment attachment = db.attachment().getAttachment(id);
|
||||
if (attachment == null || !attachment.available) {
|
||||
Log.i("Deleting " + file);
|
||||
if (!file.delete())
|
||||
Log.w("Error deleting " + file);
|
||||
}
|
||||
}
|
||||
|
||||
// Cleanup cached images
|
||||
Log.i("Cleanup cached image files");
|
||||
File[] images = new File(context.getCacheDir(), "images").listFiles();
|
||||
if (images != null)
|
||||
for (File file : images)
|
||||
if (file.isFile())
|
||||
if (manual || now - file.lastModified() > CACHE_IMAGE_DURATION) {
|
||||
Log.i("Deleting " + file);
|
||||
if (!file.delete())
|
||||
Log.w("Error deleting " + file);
|
||||
}
|
||||
|
||||
Log.i("Cleanup contacts");
|
||||
int contacts = db.contact().deleteContacts(now - KEEP_CONTACTS_DURATION);
|
||||
Log.i("Deleted contacts=" + contacts);
|
||||
|
|
Loading…
Reference in a new issue