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">
-
+
-
+
-
+
-
+
+
+