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;
if (rule.matches(context, message, null, null))
if (rule.execute(context, message, null))
if (rule.execute(context, message, false, null))
applied++;
db.setTransactionSuccessful();

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

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

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

@ -1219,7 +1219,7 @@ public class FragmentFolders extends FragmentBase {
continue;
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();
} finally {

@ -287,7 +287,7 @@ public class ServiceExternal extends ServiceBase {
continue;
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();
} finally {

@ -109,10 +109,10 @@ public class WorkerDailyRules extends Worker {
}
if (defer)
EntityOperation.queue(context, message, EntityOperation.RULE, -1L);
EntityOperation.queue(context, message, EntityOperation.RULE, -1L, false);
else {
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();

Loading…
Cancel
Save