diff --git a/app/src/main/java/com/keylesspalace/tusky/MyFirebaseMessagingService.java b/app/src/main/java/com/keylesspalace/tusky/MyFirebaseMessagingService.java index b54fc0563..0031080ce 100644 --- a/app/src/main/java/com/keylesspalace/tusky/MyFirebaseMessagingService.java +++ b/app/src/main/java/com/keylesspalace/tusky/MyFirebaseMessagingService.java @@ -121,10 +121,33 @@ public class MyFirebaseMessagingService extends FirebaseMessagingService { } } + private static boolean filterNotification(SharedPreferences preferences, + Notification notification) { + switch (notification.type) { + default: + case MENTION: { + return preferences.getBoolean("notificationFilterMentions", true); + } + case FOLLOW: { + return preferences.getBoolean("notificationFilterFollows", true); + } + case REBLOG: { + return preferences.getBoolean("notificationFilterReblogs", true); + } + case FAVOURITE: { + return preferences.getBoolean("notificationFilterFavourites", true); + } + } + } + private void buildNotification(Notification body) { final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); final SharedPreferences notificationPreferences = getApplicationContext().getSharedPreferences("Notifications", MODE_PRIVATE); + if (!filterNotification(preferences, body)) { + return; + } + String rawCurrentNotifications = notificationPreferences.getString("current", "[]"); JSONArray currentNotifications; @@ -146,7 +169,9 @@ public class MyFirebaseMessagingService extends FirebaseMessagingService { } } - if (!alreadyContains) currentNotifications.put(body.account.displayName); + if (!alreadyContains) { + currentNotifications.put(body.account.displayName); + } SharedPreferences.Editor editor = notificationPreferences.edit(); editor.putString("current", currentNotifications.toString()); @@ -222,11 +247,11 @@ public class MyFirebaseMessagingService extends FirebaseMessagingService { builder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI); } - if (preferences.getBoolean("notificationStyleVibrate", false)) { + if (preferences.getBoolean("notificationAlertVibrate", false)) { builder.setVibrate(new long[] { 500, 500 }); } - if (preferences.getBoolean("notificationStyleLight", false)) { + if (preferences.getBoolean("notificationAlertLight", false)) { builder.setLights(0xFF00FF8F, 300, 1000); } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 54d691139..b66585dc6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -101,13 +101,15 @@ Only followers and mentions can see Notifications - Enable pull notifications - Check for notifications periodically - Check interval - How often to pull + Alerts Notify with a sound - Notify with vibration - Notify with light + Notify with vibration + Notify with light + Notify me when + mentioned + followed + my posts are boosted + my posts are favourited Appearance Use the Light Theme Submit diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index b1bd2917d..f17716364 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -2,40 +2,69 @@ - + + + + + + + - + android:title="@string/pref_title_notification_filters"> - + - + + + + + + + + + android:title="@string/pref_title_notification_alerts"> - + - + - + - + + +