diff --git a/web/src/app/SubscriptionManager.js b/web/src/app/SubscriptionManager.js
index 03617e0a..ecbe4dac 100644
--- a/web/src/app/SubscriptionManager.js
+++ b/web/src/app/SubscriptionManager.js
@@ -105,9 +105,12 @@ class SubscriptionManager {
       return false;
     }
     try {
-      // eslint-disable-next-line no-param-reassign
-      notification.new = 1; // New marker (used for bubble indicator); cannot be boolean; Dexie index limitation
-      await db.notifications.add({ ...notification, subscriptionId }); // FIXME consider put() for double tab
+      await db.notifications.add({
+        ...notification,
+        subscriptionId,
+        // New marker (used for bubble indicator); cannot be boolean; Dexie index limitation
+        new: 1,
+      }); // FIXME consider put() for double tab
       await db.subscriptions.update(subscriptionId, {
         last: notification.id,
       });
diff --git a/web/src/components/Notifications.jsx b/web/src/components/Notifications.jsx
index 7d4da068..2faf2fd2 100644
--- a/web/src/components/Notifications.jsx
+++ b/web/src/components/Notifications.jsx
@@ -436,15 +436,10 @@ const ACTION_LABEL_SUFFIX = {
 };
 
 const updateActionStatus = (notification, action, progress, error) => {
-  // TODO(eslint): Fix by spreading? Does the code depend on the change, though?
-  // eslint-disable-next-line no-param-reassign
-  notification.actions = notification.actions.map((a) => {
-    if (a.id !== action.id) {
-      return a;
-    }
-    return { ...a, progress, error };
+  subscriptionManager.updateNotification({
+    ...notification,
+    actions: notification.actions.map((a) => (a.id === action.id ? { ...a, progress, error } : a)),
   });
-  subscriptionManager.updateNotification(notification);
 };
 
 const performHttpAction = async (notification, action) => {