From 09d954d044a384c25bc59960c69d26b62488e8a2 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 23 Nov 2022 08:49:14 +0100 Subject: [PATCH] Allow silent sound for rules --- app/src/main/java/eu/faircode/email/EntityRule.java | 11 ++++------- app/src/main/java/eu/faircode/email/FragmentRule.java | 1 + 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/EntityRule.java b/app/src/main/java/eu/faircode/email/EntityRule.java index a4dbdd727b..79fbfd08fc 100644 --- a/app/src/main/java/eu/faircode/email/EntityRule.java +++ b/app/src/main/java/eu/faircode/email/EntityRule.java @@ -588,9 +588,6 @@ public class EntityRule { case TYPE_DELETE: return; case TYPE_SOUND: - String uri = jargs.optString("uri"); - if (TextUtils.isEmpty(uri)) - throw new IllegalArgumentException(context.getString(R.string.title_rule_select_sound)); return; case TYPE_LOCAL_ONLY: return; @@ -1113,21 +1110,21 @@ public class EntityRule { } private boolean onActionSound(Context context, EntityMessage message, JSONObject jargs) throws JSONException { - Log.i("Speaking name=" + name); - if (message.ui_seen) return false; - Uri uri = Uri.parse(jargs.getString("uri")); + Uri uri = (jargs.has("uri") ? Uri.parse(jargs.getString("uri")) : null); boolean alarm = jargs.getBoolean("alarm"); int duration = jargs.optInt("duration", MediaPlayerHelper.DEFAULT_ALARM_DURATION); + Log.i("Sound uri=" + uri + " alarm=" + alarm + " duration=" + duration); DB db = DB.getInstance(context); message.ui_silent = true; db.message().setMessageUiSilent(message.id, message.ui_silent); - MediaPlayerHelper.queue(context, uri, alarm, duration); + if (uri != null) + MediaPlayerHelper.queue(context, uri, alarm, duration); return true; } diff --git a/app/src/main/java/eu/faircode/email/FragmentRule.java b/app/src/main/java/eu/faircode/email/FragmentRule.java index aa121d9dbf..48ad23a3ac 100644 --- a/app/src/main/java/eu/faircode/email/FragmentRule.java +++ b/app/src/main/java/eu/faircode/email/FragmentRule.java @@ -696,6 +696,7 @@ public class FragmentRule extends FragmentBase { Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALL); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, getString(R.string.title_advanced_sound)); + intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, sound); startActivityForResult(Helper.getChooser(getContext(), intent), REQUEST_SOUND); }