Monitor hidden messages

This commit is contained in:
M66B 2019-04-11 17:12:20 +02:00
parent 903a57c020
commit a0038c41da
3 changed files with 25 additions and 1 deletions

View File

@ -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);

View File

@ -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:

View File

@ -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) {