diff --git a/src/main/java/com/b44t/messenger/DcContext.java b/src/main/java/com/b44t/messenger/DcContext.java index 8f35b4bdf..782e0e805 100644 --- a/src/main/java/com/b44t/messenger/DcContext.java +++ b/src/main/java/com/b44t/messenger/DcContext.java @@ -86,6 +86,7 @@ public class DcContext { public final static int DC_CONNECTIVITY_CONNECTED = 4000; private static final String CONFIG_ACCOUNT_ENABLED = "ui.enabled"; + private static final String CONFIG_MENTION_NOTIF_ENABLED = "ui.notify_mentions"; // when using DcAccounts, use DcAccounts.addAccount() instead public DcContext(String osName, String dbfile) { @@ -226,6 +227,14 @@ public class DcContext { } } + public boolean isMentionsEnabled() { + return !"0".equals(getConfig(CONFIG_MENTION_NOTIF_ENABLED)); + } + + public void setMentionsEnabled(boolean enabled) { + setConfigInt(CONFIG_MENTION_NOTIF_ENABLED, enabled? 1 : 0); + } + public String getName() { String displayname = getConfig("displayname"); if (displayname.isEmpty()) { diff --git a/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java b/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java index 26b76e30a..421dbd808 100644 --- a/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java +++ b/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java @@ -416,6 +416,7 @@ public class NotificationCenter { DcContext dcContext = context.dcAccounts.getAccount(accountId); int chatId = dcChat.getId(); ChatData chatData = new ChatData(accountId, chatId); + isMention = isMention && dcContext.isMentionsEnabled(); if (dcContext.isMuted() || (!isMention && dcChat.isMuted())) { return; diff --git a/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java b/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java index a4af08bea..a76049baf 100644 --- a/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java @@ -36,6 +36,7 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme private CheckBoxPreference ignoreBattery; private CheckBoxPreference notificationsEnabled; + private CheckBoxPreference mentionNotifEnabled; @Override public void onCreate(Bundle paramBundle) { @@ -99,6 +100,13 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme dcContext.setMuted(!enabled); return true; }); + + mentionNotifEnabled = this.findPreference("pref_enable_mention_notifications"); + mentionNotifEnabled.setOnPreferenceChangeListener((preference, newValue) -> { + boolean enabled = (Boolean) newValue; + dcContext.setMentionsEnabled(enabled); + return true; + }); } @Override @@ -114,6 +122,7 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme // update ignoreBattery in onResume() to reflects changes done in the system settings ignoreBattery.setChecked(isIgnoringBatteryOptimizations()); notificationsEnabled.setChecked(!dcContext.isMuted()); + mentionNotifEnabled.setChecked(dcContext.isMentionsEnabled()); } @Override diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 998dfd4ad..e001645bc 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -720,6 +720,8 @@ Request to block screenshots in the recents list and inside the app To apply the screen security setting please restart the app. Notifications + Notify mentions + Notify messages in muted chats if they are directed to you, like replies or reactions to your messages Show Priority Enable system notifications for new messages diff --git a/src/main/res/xml/preferences_notifications.xml b/src/main/res/xml/preferences_notifications.xml index db7b293a8..612b34c6f 100644 --- a/src/main/res/xml/preferences_notifications.xml +++ b/src/main/res/xml/preferences_notifications.xml @@ -7,6 +7,13 @@ android:title="@string/pref_notifications" android:defaultValue="true" /> + +