Hide thread on snoozing

This commit is contained in:
M66B 2021-06-23 09:04:24 +02:00
parent c842881a34
commit 6d7b46ad50
2 changed files with 41 additions and 23 deletions

View File

@ -3149,7 +3149,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
args.putLong("time", 0); args.putLong("time", 0);
} }
onSnooze(args); onSnoozeOrHide(args);
} }
private void onActionHide(TupleMessageEx message) { private void onActionHide(TupleMessageEx message) {
@ -3161,7 +3161,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
args.putLong("time", message.ui_snoozed == null ? Long.MAX_VALUE : 0); args.putLong("time", message.ui_snoozed == null ? Long.MAX_VALUE : 0);
args.putBoolean("hide", true); args.putBoolean("hide", true);
onSnooze(args); onSnoozeOrHide(args);
} }
private void onActionSnoozeSelection() { private void onActionSnoozeSelection() {
@ -6167,7 +6167,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
break; break;
case REQUEST_MESSAGE_SNOOZE: case REQUEST_MESSAGE_SNOOZE:
if (resultCode == RESULT_OK && data != null) if (resultCode == RESULT_OK && data != null)
onSnooze(data.getBundleExtra("args")); onSnoozeOrHide(data.getBundleExtra("args"));
break; break;
case REQUEST_MESSAGES_SNOOZE: case REQUEST_MESSAGES_SNOOZE:
if (resultCode == RESULT_OK && data != null) if (resultCode == RESULT_OK && data != null)
@ -7528,7 +7528,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
}.execute(this, args, "message:color"); }.execute(this, args, "message:color");
} }
private void onSnooze(Bundle args) { private void onSnoozeOrHide(Bundle args) {
long duration = args.getLong("duration"); long duration = args.getLong("duration");
long time = args.getLong("time"); long time = args.getLong("time");
args.putLong("wakeup", duration == 0 ? -1 : time); args.putLong("wakeup", duration == 0 ? -1 : time);
@ -7559,14 +7559,23 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
account, thread, threading ? null : id, null); account, thread, threading ? null : id, null);
for (EntityMessage threaded : messages) { for (EntityMessage threaded : messages) {
db.message().setMessageUnsnoozed(threaded.id, false); db.message().setMessageUnsnoozed(threaded.id, false);
db.message().setMessageSnoozed(threaded.id, wakeup); db.message().setMessageUiIgnored(threaded.id, true);
if (threaded.id.equals(id)) if (hide) {
EntityOperation.queue(context, threaded, EntityOperation.SEEN, true, wakeup == null); db.message().setMessageSnoozed(threaded.id, wakeup);
else EntityMessage.snooze(context, threaded.id, wakeup);
db.message().setMessageUiIgnored(threaded.id, true); } else {
if (!hide && flag_snoozed && threaded.folder.equals(message.folder)) if (threaded.id.equals(id)) {
EntityOperation.queue(context, threaded, EntityOperation.FLAG, wakeup != null); db.message().setMessageSnoozed(threaded.id, wakeup);
EntityMessage.snooze(context, threaded.id, wakeup); EntityMessage.snooze(context, threaded.id, wakeup);
if (wakeup != null)
EntityOperation.queue(context, threaded, EntityOperation.SEEN, true);
} else {
db.message().setMessageSnoozed(threaded.id, wakeup == null ? null : Long.MAX_VALUE); // show/hide
EntityMessage.snooze(context, threaded.id, null);
}
if (flag_snoozed && threaded.folder.equals(message.folder))
EntityOperation.queue(context, threaded, EntityOperation.FLAG, wakeup != null);
}
} }
db.setTransactionSuccessful(); db.setTransactionSuccessful();
@ -7627,14 +7636,18 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
message.account, message.thread, threading ? null : id, null); message.account, message.thread, threading ? null : id, null);
for (EntityMessage threaded : messages) { for (EntityMessage threaded : messages) {
db.message().setMessageUnsnoozed(threaded.id, false); db.message().setMessageUnsnoozed(threaded.id, false);
db.message().setMessageSnoozed(threaded.id, wakeup); db.message().setMessageUiIgnored(threaded.id, true);
if (threaded.id.equals(id)) if (threaded.id.equals(id)) {
EntityOperation.queue(context, threaded, EntityOperation.SEEN, true, wakeup == null); db.message().setMessageSnoozed(threaded.id, wakeup);
else EntityMessage.snooze(context, threaded.id, wakeup);
db.message().setMessageUiIgnored(threaded.id, true); if (wakeup != null)
EntityOperation.queue(context, threaded, EntityOperation.SEEN, true);
} else {
db.message().setMessageSnoozed(threaded.id, wakeup == null ? null : Long.MAX_VALUE); // show/hide
EntityMessage.snooze(context, threaded.id, null);
}
if (flag_snoozed && threaded.folder.equals(message.folder)) if (flag_snoozed && threaded.folder.equals(message.folder))
EntityOperation.queue(context, threaded, EntityOperation.FLAG, wakeup != null); EntityOperation.queue(context, threaded, EntityOperation.FLAG, wakeup != null);
EntityMessage.snooze(context, threaded.id, wakeup);
} }
} }

View File

@ -968,11 +968,16 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
} }
} }
db.message().setMessageSnoozed(message.id, null); // Show thread
if (!message.ui_ignored) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ServiceSynchronize.this);
db.message().setMessageUnsnoozed(message.id, true); boolean threading = prefs.getBoolean("threading", true);
EntityOperation.queue(ServiceSynchronize.this, message, EntityOperation.SEEN, false, false); List<EntityMessage> messages = db.message().getMessagesByThread(
} message.account, message.thread, threading ? null : message.id, null);
for (EntityMessage threaded : messages)
db.message().setMessageSnoozed(threaded.id, null);
db.message().setMessageUnsnoozed(message.id, true);
EntityOperation.queue(ServiceSynchronize.this, message, EntityOperation.SEEN, false, false);
} }
db.setTransactionSuccessful(); db.setTransactionSuccessful();