Ver código fonte

Merge pull request #1142 from nextcloud/support-delete-multiple

Support delete-multiple push notification
Andy Scherzinger 4 anos atrás
pai
commit
3972acb34d

+ 13 - 1
app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt

@@ -169,6 +169,14 @@ class MagicFirebaseMessagingService : FirebaseMessagingService() {
                             )
                         } else if (deleteAll) {
                             cancelAllNotificationsForAccount(applicationContext, signatureVerification!!.userEntity)
+                        } else if (deleteMultiple) {
+                            notificationIds.forEach {
+                                cancelExistingNotificationWithId(
+                                    applicationContext,
+                                    signatureVerification!!.userEntity,
+                                    it
+                                )
+                            }
                         } else if (type == "call") {
                             val fullScreenIntent = Intent(applicationContext, MagicCallActivity::class.java)
                             val bundle = Bundle()
@@ -201,7 +209,11 @@ class MagicFirebaseMessagingService : FirebaseMessagingService() {
                                         LoganSquare.parse(ringtonePreferencesString, RingtoneSettings::class.java)
                                     ringtoneSettings.ringtoneUri
                                 } catch (exception: IOException) {
-                                    Uri.parse("android.resource://" + applicationContext.packageName + "/raw/librem_by_feandesign_call")
+                                    Uri.parse(
+                                        "android.resource://" +
+                                            applicationContext.packageName +
+                                            "/raw/librem_by_feandesign_call"
+                                    )
                                 }
                             }
 

+ 4 - 0
app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java

@@ -586,6 +586,10 @@ public class NotificationWorker extends Worker {
                         NotificationUtils.INSTANCE.cancelExistingNotificationWithId(context, signatureVerification.getUserEntity(), decryptedPushMessage.getNotificationId());
                     } else if (decryptedPushMessage.isDeleteAll()) {
                         NotificationUtils.INSTANCE.cancelAllNotificationsForAccount(context, signatureVerification.getUserEntity());
+                    } else if (decryptedPushMessage.isDeleteMultiple()) {
+                        for (long notificationId : decryptedPushMessage.getNotificationIds()) {
+                            NotificationUtils.INSTANCE.cancelExistingNotificationWithId(context, signatureVerification.getUserEntity(), notificationId);
+                        }
                     } else {
                         credentials = ApiUtils.getCredentials(signatureVerification.getUserEntity().getUsername(),
                                 signatureVerification.getUserEntity().getToken());

+ 22 - 0
app/src/main/java/com/nextcloud/talk/models/json/push/DecryptedPushMessage.java

@@ -44,12 +44,18 @@ public class DecryptedPushMessage {
     @JsonField(name = "nid")
     public long notificationId;
 
+    @JsonField(name = "nids")
+    public long[] notificationIds;
+
     @JsonField(name = "delete")
     public boolean delete;
 
     @JsonField(name = "delete-all")
     public boolean deleteAll;
 
+    @JsonField(name = "delete-multiple")
+    public boolean deleteMultiple;
+
     @JsonIgnore
     public NotificationUser notificationUser;
 
@@ -99,6 +105,14 @@ public class DecryptedPushMessage {
         return this.timestamp;
     }
 
+    public long[] getNotificationIds() {
+        return notificationIds;
+    }
+
+    public boolean isDeleteMultiple() {
+        return deleteMultiple;
+    }
+
     public void setApp(String app) {
         this.app = app;
     }
@@ -139,6 +153,14 @@ public class DecryptedPushMessage {
         this.timestamp = timestamp;
     }
 
+    public void setNotificationIds(long[] notificationIds) {
+        this.notificationIds = notificationIds;
+    }
+
+    public void setDeleteMultiple(boolean deleteMultiple) {
+        this.deleteMultiple = deleteMultiple;
+    }
+
     public boolean equals(final Object o) {
         if (o == this) {
             return true;

+ 1 - 1
scripts/analysis/findbugs-results.txt

@@ -1 +1 @@
-499
+489

+ 4 - 0
spotbugs-filter.xml

@@ -33,6 +33,10 @@
     <Match>
         <Class name="~.*\$\$Parcelable.*" />
     </Match>
+    <!-- JSON/Data classes with generated accessor methods -->
+    <Match>
+        <Class name="~com\.nextcloud\.talk\.models\.json\.push.*" />
+    </Match>
 
     <!-- Dagger code is autogenerated. Exclude it from Check. -->
     <Match>