diff --git a/scripts/analysis/findbugs-results.txt b/scripts/analysis/findbugs-results.txt index 1fde7522a771..59b8937b6291 100644 --- a/scripts/analysis/findbugs-results.txt +++ b/scripts/analysis/findbugs-results.txt @@ -1 +1 @@ -434 \ No newline at end of file +424 \ No newline at end of file diff --git a/spotbugs-filter.xml b/spotbugs-filter.xml index d91902440184..b37c066a698d 100644 --- a/spotbugs-filter.xml +++ b/spotbugs-filter.xml @@ -1,27 +1,28 @@ - - - + + + + - + - + - - + + - + @@ -30,5 +31,5 @@ - + diff --git a/src/main/java/com/owncloud/android/datamodel/DecryptedPushMessage.java b/src/main/java/com/owncloud/android/datamodel/DecryptedPushMessage.java index 961eca975621..8499ab00619e 100644 --- a/src/main/java/com/owncloud/android/datamodel/DecryptedPushMessage.java +++ b/src/main/java/com/owncloud/android/datamodel/DecryptedPushMessage.java @@ -20,6 +20,8 @@ package com.owncloud.android.datamodel; +import com.google.gson.annotations.SerializedName; + import org.parceler.Parcel; import lombok.AllArgsConstructor; @@ -41,4 +43,7 @@ public class DecryptedPushMessage { public String subject; public String id; public int nid; + public boolean delete; + @SerializedName("delete-all") + public boolean deleteAll; } diff --git a/src/main/java/com/owncloud/android/jobs/NotificationJob.java b/src/main/java/com/owncloud/android/jobs/NotificationJob.java index ef6c85da3f87..7e0ccd76986e 100644 --- a/src/main/java/com/owncloud/android/jobs/NotificationJob.java +++ b/src/main/java/com/owncloud/android/jobs/NotificationJob.java @@ -95,9 +95,7 @@ public class NotificationJob extends Job { private static final String KEY_NOTIFICATION_ACTION_TYPE = "KEY_NOTIFICATION_ACTION_TYPE"; private static final String PUSH_NOTIFICATION_ID = "PUSH_NOTIFICATION_ID"; private static final String NUMERIC_NOTIFICATION_ID = "NUMERIC_NOTIFICATION_ID"; - private static final String APP_SPREED = "spreed"; - private SecureRandom randomId = new SecureRandom(); private Context context; private UserAccountManager accountManager; @@ -110,6 +108,7 @@ public class NotificationJob extends Job { @Override protected Result onRunJob(@NonNull Params params) { context = getContext(); + NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context); PersistableBundleCompat persistableBundleCompat = getParams().getExtras(); String subject = persistableBundleCompat.getString(KEY_NOTIFICATION_SUBJECT, ""); String signature = persistableBundleCompat.getString(KEY_NOTIFICATION_SIGNATURE, ""); @@ -135,8 +134,11 @@ protected Result onRunJob(@NonNull Params params) { DecryptedPushMessage decryptedPushMessage = gson.fromJson(new String(decryptedSubject), DecryptedPushMessage.class); - // We ignore Spreed messages for now - if (!APP_SPREED.equals(decryptedPushMessage.getApp())) { + if (decryptedPushMessage.delete) { + notificationManager.cancel(decryptedPushMessage.nid); + } else if (decryptedPushMessage.deleteAll) { + notificationManager.cancelAll(); + } else { fetchCompleteNotification(signatureVerification.getAccount(), decryptedPushMessage); } } @@ -152,6 +154,7 @@ protected Result onRunJob(@NonNull Params params) { } private void sendNotification(Notification notification, Account account) { + SecureRandom randomId = new SecureRandom(); RichObject file = notification.subjectRichParameters.get("file"); Intent intent; @@ -234,7 +237,7 @@ private void sendNotification(Notification notification, Account account) { .setContentIntent(pendingIntent).build()); NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context); - notificationManager.notify(pushNotificationId, notificationBuilder.build()); + notificationManager.notify(notification.getNotificationId(), notificationBuilder.build()); } private void fetchCompleteNotification(Account account, DecryptedPushMessage decryptedPushMessage) {