From ed592950c0b8dd15c65a90d85fa034a002f0bea2 Mon Sep 17 00:00:00 2001 From: agrajaghh Date: Sat, 19 Dec 2015 13:07:44 +0100 Subject: [PATCH] setting to disable notifications for new contacts also mute these notifications between 23:00 and 09:00 fixes #4572 Closes #4926 --- res/values/strings.xml | 2 ++ res/xml/preferences_notifications.xml | 6 ++++++ .../securesms/notifications/MessageNotifier.java | 11 ++++++++++- .../thoughtcrime/securesms/util/DirectoryHelper.java | 12 ++++++++++-- .../securesms/util/TextSecurePreferences.java | 5 +++++ 5 files changed, 33 insertions(+), 3 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index b26fbd4dd9..6bcbcb6b2f 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -947,6 +947,8 @@ Inactivity timeout interval Notifications Enable message notifications + New contacts notifications + Show a notification for new Signal contacts LED color Unknown LED blink pattern diff --git a/res/xml/preferences_notifications.xml b/res/xml/preferences_notifications.xml index 53b371d3ff..c8a48c5184 100644 --- a/res/xml/preferences_notifications.xml +++ b/res/xml/preferences_notifications.xml @@ -57,4 +57,10 @@ android:entries="@array/pref_notification_privacy_entries" android:entryValues="@array/pref_notification_privacy_values"/> + + \ No newline at end of file diff --git a/src/org/thoughtcrime/securesms/notifications/MessageNotifier.java b/src/org/thoughtcrime/securesms/notifications/MessageNotifier.java index b59df2370c..9d4aa67e54 100644 --- a/src/org/thoughtcrime/securesms/notifications/MessageNotifier.java +++ b/src/org/thoughtcrime/securesms/notifications/MessageNotifier.java @@ -121,6 +121,15 @@ public class MessageNotifier { @Nullable MasterSecret masterSecret, boolean includePushDatabase, long threadId) + { + updateNotification(context, masterSecret, includePushDatabase, threadId, true); + } + + public static void updateNotification(@NonNull Context context, + @Nullable MasterSecret masterSecret, + boolean includePushDatabase, + long threadId, + boolean signal) { boolean isVisible = visibleThread == threadId; @@ -141,7 +150,7 @@ public class MessageNotifier { if (isVisible) { sendInThreadNotification(context, threads.getRecipientsForThreadId(threadId)); } else { - updateNotification(context, masterSecret, true, includePushDatabase, 0); + updateNotification(context, masterSecret, signal, includePushDatabase, 0); } } diff --git a/src/org/thoughtcrime/securesms/util/DirectoryHelper.java b/src/org/thoughtcrime/securesms/util/DirectoryHelper.java index 63210ff1c2..f32a9fcaca 100644 --- a/src/org/thoughtcrime/securesms/util/DirectoryHelper.java +++ b/src/org/thoughtcrime/securesms/util/DirectoryHelper.java @@ -16,7 +16,6 @@ import org.thoughtcrime.securesms.ApplicationContext; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.crypto.MasterSecret; import org.thoughtcrime.securesms.crypto.SessionUtil; -import org.thoughtcrime.securesms.crypto.storage.TextSecureSessionStore; import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.NotInDirectoryException; import org.thoughtcrime.securesms.database.TextSecureDirectory; @@ -32,6 +31,7 @@ import org.whispersystems.textsecure.api.push.ContactTokenDetails; import org.whispersystems.textsecure.api.util.InvalidNumberException; import java.io.IOException; +import java.util.Calendar; import java.util.LinkedList; import java.util.List; import java.util.Set; @@ -213,11 +213,19 @@ public class DirectoryHelper { @Nullable MasterSecret masterSecret, @NonNull List newUsers) { + if (!TextSecurePreferences.isNewContactsNotificationEnabled(context)) return; + for (String newUser : newUsers) { if (!SessionUtil.hasSession(context, masterSecret, newUser)) { IncomingJoinedMessage message = new IncomingJoinedMessage(newUser); Pair smsAndThreadId = DatabaseFactory.getSmsDatabase(context).insertMessageInbox(message); - MessageNotifier.updateNotification(context, masterSecret, smsAndThreadId.second); + + int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY); + if (hour >= 9 && hour < 23) { + MessageNotifier.updateNotification(context, masterSecret, false, smsAndThreadId.second, true); + } else { + MessageNotifier.updateNotification(context, masterSecret, false, smsAndThreadId.second, false); + } } } } diff --git a/src/org/thoughtcrime/securesms/util/TextSecurePreferences.java b/src/org/thoughtcrime/securesms/util/TextSecurePreferences.java index 932e6570ff..4b428d9fac 100644 --- a/src/org/thoughtcrime/securesms/util/TextSecurePreferences.java +++ b/src/org/thoughtcrime/securesms/util/TextSecurePreferences.java @@ -86,6 +86,7 @@ public class TextSecurePreferences { public static final String REPEAT_ALERTS_PREF = "pref_repeat_alerts"; public static final String NOTIFICATION_PRIVACY_PREF = "pref_notification_privacy"; + public static final String NEW_CONTACTS_NOTIFICATIONS = "pref_enable_new_contacts_notifications"; public static final String MEDIA_DOWNLOAD_MOBILE_PREF = "pref_media_download_mobile"; public static final String MEDIA_DOWNLOAD_WIFI_PREF = "pref_media_download_wifi"; @@ -116,6 +117,10 @@ public class TextSecurePreferences { return new NotificationPrivacyPreference(getStringPreference(context, NOTIFICATION_PRIVACY_PREF, "all")); } + public static boolean isNewContactsNotificationEnabled(Context context) { + return getBooleanPreference(context, NEW_CONTACTS_NOTIFICATIONS, true); + } + public static long getRatingLaterTimestamp(Context context) { return getLongPreference(context, RATING_LATER_PREF, 0); }