From 3586d91925c7adde4a252ef81597e46b61d90b24 Mon Sep 17 00:00:00 2001
From: Kevin Jahns <kevin.jahns@pm.me>
Date: Fri, 29 Oct 2021 17:49:30 +0200
Subject: [PATCH] fire subdocs event only when something changed

---
 src/utils/Transaction.js | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/utils/Transaction.js b/src/utils/Transaction.js
index ff17aaf1..12932383 100644
--- a/src/utils/Transaction.js
+++ b/src/utils/Transaction.js
@@ -350,11 +350,13 @@ const cleanupTransactions = (transactionCleanups, i) => {
           doc.emit('updateV2', [encoder.toUint8Array(), transaction.origin, doc, transaction])
         }
       }
-      transaction.subdocsAdded.forEach(subdoc => doc.subdocs.add(subdoc))
-      transaction.subdocsRemoved.forEach(subdoc => doc.subdocs.delete(subdoc))
-
-      doc.emit('subdocs', [{ loaded: transaction.subdocsLoaded, added: transaction.subdocsAdded, removed: transaction.subdocsRemoved }])
-      transaction.subdocsRemoved.forEach(subdoc => subdoc.destroy())
+      const { subdocsAdded, subdocsLoaded, subdocsRemoved } = transaction
+      if (subdocsAdded.size > 0 || subdocsRemoved.size > 0 || subdocsLoaded.size > 0) {
+        subdocsAdded.forEach(subdoc => doc.subdocs.add(subdoc))
+        subdocsRemoved.forEach(subdoc => doc.subdocs.delete(subdoc))
+        doc.emit('subdocs', [{ loaded: subdocsLoaded, added: subdocsAdded, removed: subdocsRemoved }])
+        subdocsRemoved.forEach(subdoc => subdoc.destroy())
+      }
 
       if (transactionCleanups.length <= i + 1) {
         doc._transactionCleanups = []