Suppress rule sounds for browsed messages

pull/217/head
M66B 6 months ago
parent 5840afb30f
commit 96869883f8

@ -467,7 +467,7 @@ public class AdapterRule extends RecyclerView.Adapter<AdapterRule.ViewHolder> {
continue; continue;
if (rule.matches(context, message, null, null)) if (rule.matches(context, message, null, null))
if (rule.execute(context, message, null)) if (rule.execute(context, message, false, null))
applied++; applied++;
db.setTransactionSuccessful(); db.setTransactionSuccessful();

@ -3253,10 +3253,11 @@ class Core {
db.beginTransaction(); db.beginTransaction();
long id = jargs.getLong(0); long id = jargs.getLong(0);
boolean browsed = jargs.optBoolean(1);
if (id < 0) { if (id < 0) {
EntityLog.log(context, "Executing deferred daily rules for message=" + message.id); EntityLog.log(context, "Executing deferred daily rules for message=" + message.id);
List<EntityRule> rules = db.rule().getEnabledRules(message.folder, true); List<EntityRule> rules = db.rule().getEnabledRules(message.folder, true);
EntityRule.run(context, rules, message, null, null); EntityRule.run(context, rules, message, browsed, null, null);
} else { } else {
EntityRule rule = db.rule().getRule(id); EntityRule rule = db.rule().getRule(id);
if (rule == null) if (rule == null)
@ -3266,7 +3267,7 @@ class Core {
throw new IllegalArgumentException("Message without content id=" + rule.id + ":" + rule.name); throw new IllegalArgumentException("Message without content id=" + rule.id + ":" + rule.name);
rule.async = true; rule.async = true;
rule.execute(context, message, null); rule.execute(context, message, browsed, null);
} }
db.setTransactionSuccessful(); db.setTransactionSuccessful();
@ -3727,7 +3728,7 @@ class Core {
attachment.id = db.attachment().insertAttachment(attachment); attachment.id = db.attachment().insertAttachment(attachment);
} }
runRules(context, headers, body, account, folder, message, rules); runRules(context, headers, body, account, folder, message, false, rules);
reportNewMessage(context, account, folder, message); reportNewMessage(context, account, folder, message);
db.setTransactionSuccessful(); db.setTransactionSuccessful();
@ -5014,7 +5015,7 @@ class Core {
attachment.id = db.attachment().insertAttachment(attachment); attachment.id = db.attachment().insertAttachment(attachment);
} }
runRules(context, headers, body, account, folder, message, rules); runRules(context, headers, body, account, folder, message, browsed, rules);
if (message.blocklist != null && message.blocklist) { if (message.blocklist != null && message.blocklist) {
boolean use_blocklist = prefs.getBoolean("use_blocklist", false); boolean use_blocklist = prefs.getBoolean("use_blocklist", false);
@ -5258,7 +5259,7 @@ class Core {
db.message().updateMessage(message); db.message().updateMessage(message);
if (process) if (process)
runRules(context, headers, body, account, folder, message, rules); runRules(context, headers, body, account, folder, message, browsed, rules);
db.setTransactionSuccessful(); db.setTransactionSuccessful();
} finally { } finally {
@ -5458,7 +5459,7 @@ class Core {
private static void runRules( private static void runRules(
Context context, List<Header> headers, String html, Context context, List<Header> headers, String html,
EntityAccount account, EntityFolder folder, EntityMessage message, EntityAccount account, EntityFolder folder, EntityMessage message, boolean browsed,
List<EntityRule> rules) { List<EntityRule> rules) {
if (EntityFolder.INBOX.equals(folder.type)) { if (EntityFolder.INBOX.equals(folder.type)) {
@ -5478,7 +5479,7 @@ class Core {
try { try {
boolean executed = false; boolean executed = false;
if (pro) { if (pro) {
int applied = EntityRule.run(context, rules, message, headers, html); int applied = EntityRule.run(context, rules, message, browsed, headers, html);
executed = (applied > 0); executed = (applied > 0);
} }

@ -217,7 +217,7 @@ public class EntityRule {
} }
static int run(Context context, List<EntityRule> rules, static int run(Context context, List<EntityRule> rules,
EntityMessage message, List<Header> headers, String html) EntityMessage message, boolean browsed, List<Header> headers, String html)
throws JSONException, MessagingException, IOException { throws JSONException, MessagingException, IOException {
int applied = 0; int applied = 0;
@ -226,7 +226,7 @@ public class EntityRule {
if (rule.group != null && stopped.contains(rule.group)) if (rule.group != null && stopped.contains(rule.group))
continue; continue;
if (rule.matches(context, message, headers, html)) { if (rule.matches(context, message, headers, html)) {
if (rule.execute(context, message, html)) if (rule.execute(context, message, browsed, html))
applied++; applied++;
if (rule.stop) if (rule.stop)
if (rule.group == null) if (rule.group == null)
@ -635,8 +635,8 @@ public class EntityRule {
return matched; return matched;
} }
boolean execute(Context context, EntityMessage message, String html) throws JSONException, IOException { boolean execute(Context context, EntityMessage message, boolean browsed, String html) throws JSONException, IOException {
boolean executed = _execute(context, message, html); boolean executed = _execute(context, message, browsed, html);
if (this.id != null && executed) { if (this.id != null && executed) {
DB db = DB.getInstance(context); DB db = DB.getInstance(context);
db.rule().applyRule(id, new Date().getTime()); db.rule().applyRule(id, new Date().getTime());
@ -644,7 +644,7 @@ public class EntityRule {
return executed; return executed;
} }
private boolean _execute(Context context, EntityMessage message, String html) throws JSONException, IllegalArgumentException, IOException { private boolean _execute(Context context, EntityMessage message, boolean browsed, String html) throws JSONException, IllegalArgumentException, IOException {
JSONObject jaction = new JSONObject(action); JSONObject jaction = new JSONObject(action);
int type = jaction.getInt("type"); int type = jaction.getInt("type");
EntityLog.log(context, EntityLog.Type.Rules, message, EntityLog.log(context, EntityLog.Type.Rules, message,
@ -674,15 +674,15 @@ public class EntityRule {
case TYPE_COPY: case TYPE_COPY:
return onActionCopy(context, message, jaction); return onActionCopy(context, message, jaction);
case TYPE_ANSWER: case TYPE_ANSWER:
return onActionAnswer(context, message, jaction); return onActionAnswer(context, message, browsed, jaction);
case TYPE_TTS: case TYPE_TTS:
return onActionTts(context, message, jaction); return onActionTts(context, message, browsed, jaction);
case TYPE_AUTOMATION: case TYPE_AUTOMATION:
return onActionAutomation(context, message, jaction); return onActionAutomation(context, message, jaction);
case TYPE_DELETE: case TYPE_DELETE:
return onActionDelete(context, message, jaction); return onActionDelete(context, message, jaction);
case TYPE_SOUND: case TYPE_SOUND:
return onActionSound(context, message, jaction); return onActionSound(context, message, browsed, jaction);
case TYPE_LOCAL_ONLY: case TYPE_LOCAL_ONLY:
return onActionLocalOnly(context, message, jaction); return onActionLocalOnly(context, message, jaction);
case TYPE_NOTES: case TYPE_NOTES:
@ -692,7 +692,7 @@ public class EntityRule {
case TYPE_SILENT: case TYPE_SILENT:
return onActionSilent(context, message, jaction); return onActionSilent(context, message, jaction);
case TYPE_SUMMARIZE: case TYPE_SUMMARIZE:
return onActionSummarize(context, message, jaction); return onActionSummarize(context, message, browsed, jaction);
default: default:
throw new IllegalArgumentException("Unknown rule type=" + type + " name=" + name); throw new IllegalArgumentException("Unknown rule type=" + type + " name=" + name);
} }
@ -1017,7 +1017,7 @@ public class EntityRule {
return true; return true;
} }
private boolean onActionAnswer(Context context, EntityMessage message, JSONObject jargs) { private boolean onActionAnswer(Context context, EntityMessage message, boolean browsed, JSONObject jargs) {
DB db = DB.getInstance(context); DB db = DB.getInstance(context);
String to = jargs.optString("to"); String to = jargs.optString("to");
boolean resend = jargs.optBoolean("resend"); boolean resend = jargs.optBoolean("resend");
@ -1068,7 +1068,7 @@ public class EntityRule {
} }
if (!complete && this.id != null) { if (!complete && this.id != null) {
EntityOperation.queue(context, message, EntityOperation.RULE, this.id); EntityOperation.queue(context, message, EntityOperation.RULE, this.id, browsed);
return true; return true;
} }
@ -1286,15 +1286,15 @@ public class EntityRule {
return true; return true;
} }
private boolean onActionTts(Context context, EntityMessage message, JSONObject jargs) { private boolean onActionTts(Context context, EntityMessage message, boolean browsed, JSONObject jargs) {
DB db = DB.getInstance(context); DB db = DB.getInstance(context);
if (message.ui_seen) if (message.ui_seen || browsed)
return false; return false;
if (!message.content && this.id != null) { if (!message.content && this.id != null) {
EntityOperation.queue(context, message, EntityOperation.BODY); EntityOperation.queue(context, message, EntityOperation.BODY);
EntityOperation.queue(context, message, EntityOperation.RULE, this.id); EntityOperation.queue(context, message, EntityOperation.RULE, this.id, browsed);
return true; return true;
} }
@ -1439,13 +1439,16 @@ public class EntityRule {
return true; return true;
} }
private boolean onActionSound(Context context, EntityMessage message, JSONObject jargs) throws JSONException { private boolean onActionSound(Context context, EntityMessage message, boolean browsed, JSONObject jargs) throws JSONException {
Uri uri = (jargs.has("uri") ? Uri.parse(jargs.getString("uri")) : null); Uri uri = (jargs.has("uri") ? Uri.parse(jargs.getString("uri")) : null);
boolean loop = jargs.optBoolean("loop"); boolean loop = jargs.optBoolean("loop");
boolean alarm = jargs.optBoolean("alarm"); boolean alarm = jargs.optBoolean("alarm");
int duration = jargs.optInt("duration", MediaPlayerHelper.DEFAULT_ALARM_DURATION); int duration = jargs.optInt("duration", MediaPlayerHelper.DEFAULT_ALARM_DURATION);
Log.i("Sound uri=" + uri + " loop=" + loop + " alarm=" + alarm + " duration=" + duration); Log.i("Sound uri=" + uri + " loop=" + loop + " alarm=" + alarm + " duration=" + duration);
if (browsed)
return false;
DB db = DB.getInstance(context); DB db = DB.getInstance(context);
message.ui_silent = true; message.ui_silent = true;
@ -1600,14 +1603,14 @@ public class EntityRule {
return true; return true;
} }
private boolean onActionSummarize(Context context, EntityMessage message, JSONObject jargs) throws JSONException, IOException { private boolean onActionSummarize(Context context, EntityMessage message, boolean browsed, JSONObject jargs) throws JSONException, IOException {
DB db = DB.getInstance(context); DB db = DB.getInstance(context);
if (message.ui_hide) if (message.ui_hide)
return false; return false;
if (!this.async && this.id != null) { if (!this.async && this.id != null) {
EntityOperation.queue(context, message, EntityOperation.RULE, this.id); EntityOperation.queue(context, message, EntityOperation.RULE, this.id, browsed);
return true; return true;
} }

@ -114,7 +114,7 @@ public class FragmentDialogRuleCheck extends FragmentDialogBase {
continue; continue;
if (rule.matches(context, message, null, null)) if (rule.matches(context, message, null, null))
if (rule.execute(context, message, null)) if (rule.execute(context, message, false, null))
applied++; applied++;
db.setTransactionSuccessful(); db.setTransactionSuccessful();

@ -1219,7 +1219,7 @@ public class FragmentFolders extends FragmentBase {
continue; continue;
EntityLog.log(context, "Executing rules message=" + message.id); EntityLog.log(context, "Executing rules message=" + message.id);
applied = EntityRule.run(context, rules, message, null, null); applied = EntityRule.run(context, rules, message, false, null, null);
db.setTransactionSuccessful(); db.setTransactionSuccessful();
} finally { } finally {

@ -287,7 +287,7 @@ public class ServiceExternal extends ServiceBase {
continue; continue;
EntityLog.log(context, "Executing rules message=" + message.id); EntityLog.log(context, "Executing rules message=" + message.id);
applied = EntityRule.run(context, rules, message, null, null); applied = EntityRule.run(context, rules, message, false, null, null);
db.setTransactionSuccessful(); db.setTransactionSuccessful();
} finally { } finally {

@ -109,10 +109,10 @@ public class WorkerDailyRules extends Worker {
} }
if (defer) if (defer)
EntityOperation.queue(context, message, EntityOperation.RULE, -1L); EntityOperation.queue(context, message, EntityOperation.RULE, -1L, false);
else { else {
EntityLog.log(context, "Executing daily rules message=" + message.id); EntityLog.log(context, "Executing daily rules message=" + message.id);
EntityRule.run(context, rules, message, null, null); EntityRule.run(context, rules, message, false, null, null);
} }
db.setTransactionSuccessful(); db.setTransactionSuccessful();

Loading…
Cancel
Save