瀏覽代碼

Support delete-multiple push notification

Signed-off-by: Joas Schilling <coding@schilljs.com>
Joas Schilling 4 年之前
父節點
當前提交
90bf76e013

+ 4 - 0
app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt

@@ -169,6 +169,10 @@ 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()

+ 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());

+ 6 - 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;