mirror of
https://github.com/M66B/FairEmail.git
synced 2025-02-24 07:01:05 +00:00
Monitor hidden messages
This commit is contained in:
parent
903a57c020
commit
a0038c41da
3 changed files with 25 additions and 1 deletions
|
@ -147,6 +147,12 @@ public interface DaoMessage {
|
|||
", CASE WHEN folder.type = '" + EntityFolder.ARCHIVE + "' THEN 1 ELSE 0 END")
|
||||
DataSource.Factory<Integer, TupleMessageEx> pagedThread(long account, String thread, Long id, boolean debug);
|
||||
|
||||
@Query("SELECT id FROM message" +
|
||||
" WHERE account = :account" +
|
||||
" AND thread = :thread" +
|
||||
" AND ui_hide")
|
||||
LiveData<List<Long>> liveHidden(long account, String thread);
|
||||
|
||||
@Query("SELECT COUNT(id)" +
|
||||
" FROM message" +
|
||||
" WHERE id = :id")
|
||||
|
@ -309,6 +315,9 @@ public interface DaoMessage {
|
|||
@Query("UPDATE message SET ui_hide = :ui_hide WHERE id = :id")
|
||||
int setMessageUiHide(long id, boolean ui_hide);
|
||||
|
||||
@Query("UPDATE message SET ui_hide = :ui_hide WHERE folder = :folder AND uid = :uid")
|
||||
int setMessageUiHide(long folder, long uid, boolean ui_hide);
|
||||
|
||||
@Query("UPDATE message SET ui_ignored = :ui_ignored WHERE id = :id")
|
||||
int setMessageUiIgnored(long id, boolean ui_ignored);
|
||||
|
||||
|
|
|
@ -1798,6 +1798,20 @@ public class FragmentMessages extends FragmentBase {
|
|||
setSubtitle(getString(R.string.title_folder_thread, account == null ? "" : account.name));
|
||||
}
|
||||
});
|
||||
db.message().liveHidden(account, thread).observe(getViewLifecycleOwner(), new Observer<List<Long>>() {
|
||||
@Override
|
||||
public void onChanged(List<Long> ids) {
|
||||
if (ids != null)
|
||||
for (long id : ids) {
|
||||
Log.i("Hidden id=" + id);
|
||||
for (String key : values.keySet())
|
||||
values.get(key).remove(id);
|
||||
bodies.remove(id);
|
||||
html.remove(id);
|
||||
attachments.remove(id);
|
||||
}
|
||||
}
|
||||
});
|
||||
break;
|
||||
|
||||
case SEARCH:
|
||||
|
|
|
@ -744,7 +744,8 @@ public class ServiceSynchronize extends LifecycleService {
|
|||
long uid = ifolder.getUID(imessage);
|
||||
|
||||
DB db = DB.getInstance(ServiceSynchronize.this);
|
||||
int count = db.message().deleteMessage(folder.id, uid);
|
||||
int count = db.message().setMessageUiHide(folder.id, uid, true);
|
||||
// Will be deleted on next sync
|
||||
|
||||
Log.i(folder.name + " deleted uid=" + uid + " count=" + count);
|
||||
} catch (MessageRemovedException ex) {
|
||||
|
|
Loading…
Reference in a new issue