Consistent double tap to mark read

pull/189/head
M66B 5 years ago
parent 1f0274dbf5
commit c3c3baae17

@ -3036,19 +3036,19 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
} }
}, ViewConfiguration.getDoubleTapTimeout()); }, ViewConfiguration.getDoubleTapTimeout());
} else { } else {
message.ui_seen = !message.ui_seen; message.unseen = (message.unseen == 0 ? message.count : 0);
message.unseen = (message.ui_seen ? 0 : message.count); message.ui_seen = (message.unseen == 0);
bindSeen(message); bindSeen(message);
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putLong("id", message.id); args.putLong("id", message.id);
args.putInt("protocol", message.accountProtocol); args.putBoolean("seen", message.ui_seen);
new SimpleTask<Void>() { new SimpleTask<Void>() {
@Override @Override
protected Void onExecute(Context context, Bundle args) { protected Void onExecute(Context context, Bundle args) {
long id = args.getLong("id"); long id = args.getLong("id");
int protocol = args.getInt("protocol"); boolean seen = args.getBoolean("seen");
DB db = DB.getInstance(context); DB db = DB.getInstance(context);
try { try {
@ -3058,15 +3058,12 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
if (message == null) if (message == null)
return null; return null;
if (protocol != EntityAccount.TYPE_IMAP) // When marking read: in all folders
EntityOperation.queue(context, message, EntityOperation.SEEN, !message.ui_seen); List<EntityMessage> messages = db.message().getMessagesByThread(
else { message.account, message.thread, threading ? null : id, seen ? null : message.folder);
List<EntityMessage> messages = db.message().getMessagesByThread( for (EntityMessage threaded : messages)
message.account, message.thread, threading ? null : id, message.ui_seen ? message.folder : null); if (threaded.ui_seen != seen)
for (EntityMessage threaded : messages) EntityOperation.queue(context, threaded, EntityOperation.SEEN, seen);
if (threaded.ui_seen == message.ui_seen)
EntityOperation.queue(context, threaded, EntityOperation.SEEN, !message.ui_seen);
}
db.setTransactionSuccessful(); db.setTransactionSuccessful();
} finally { } finally {

Loading…
Cancel
Save