From 04908ca4bbf8d0b6806021dbc63afa16127d61d5 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 8 Nov 2023 08:05:59 +0100 Subject: [PATCH] User is not reading messages --- app/src/main/java/eu/faircode/email/Core.java | 13 ++++++++++++- app/src/main/java/eu/faircode/email/DaoMessage.java | 4 ++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index ee544066f6..72ff438823 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -3826,6 +3826,13 @@ class Core { cal_keep.set(Calendar.SECOND, 0); cal_keep.set(Calendar.MILLISECOND, 0); + Calendar cal_keep_unseen = Calendar.getInstance(); + cal_keep_unseen.add(Calendar.DAY_OF_MONTH, -keep_days * 2); + cal_keep_unseen.set(Calendar.HOUR_OF_DAY, 0); + cal_keep_unseen.set(Calendar.MINUTE, 0); + cal_keep_unseen.set(Calendar.SECOND, 0); + cal_keep_unseen.set(Calendar.MILLISECOND, 0); + long sync_time = cal_sync.getTimeInMillis(); if (sync_time < 0) sync_time = 0; @@ -3834,6 +3841,10 @@ class Core { if (keep_time < 0) keep_time = 0; + long keep_time_unseen = cal_keep_unseen.getTimeInMillis(); + if (keep_time_unseen < 0) + keep_time_unseen = 0; + Log.i(folder.name + " sync=" + new Date(sync_time) + " keep=" + new Date(keep_time)); // Delete old local messages @@ -3852,7 +3863,7 @@ class Core { EntityOperation.queue(context, message, EntityOperation.MOVE, trash.id); } } else { - int old = db.message().deleteMessagesBefore(folder.id, delete_time, keep_time, delete_unseen); + int old = db.message().deleteMessagesBefore(folder.id, delete_time, keep_time, keep_time_unseen, delete_unseen); Log.i(folder.name + " local old=" + old); } diff --git a/app/src/main/java/eu/faircode/email/DaoMessage.java b/app/src/main/java/eu/faircode/email/DaoMessage.java index 5b0c78a9a4..d05b87e704 100644 --- a/app/src/main/java/eu/faircode/email/DaoMessage.java +++ b/app/src/main/java/eu/faircode/email/DaoMessage.java @@ -1016,11 +1016,11 @@ public interface DaoMessage { " WHERE folder = :folder" + " AND received < :keep_time" + " AND NOT uid IS NULL" + - " AND (ui_seen OR :unseen)" + + " AND (ui_seen OR received < :keep_time_unseen OR :unseen)" + " AND NOT ui_flagged" + " AND stored < :sync_time" + // moved, browsed " AND (ui_snoozed IS NULL OR ui_snoozed = " + Long.MAX_VALUE + ")") - int deleteMessagesBefore(long folder, long sync_time, long keep_time, boolean unseen); + int deleteMessagesBefore(long folder, long sync_time, long keep_time, long keep_time_unseen, boolean unseen); @Transaction @Query("DELETE FROM message" +