git » sdk » commit 9a6a1a9

Dedup versions when storing

author Stephen Paul Weber
2025-03-23 02:58:09 UTC
committer Stephen Paul Weber
2025-03-23 02:58:09 UTC
parent dd601058d86fe2fce0b9ad713b9f77ba4c64163f

Dedup versions when storing

In case one gets stored more than once somehow

snikket/persistence/IDB.js +1 -1

diff --git a/snikket/persistence/IDB.js b/snikket/persistence/IDB.js
index 6e358a4..664861e 100644
--- a/snikket/persistence/IDB.js
+++ b/snikket/persistence/IDB.js
@@ -156,7 +156,7 @@ export default (dbname, media, tokenize, stemmer) => {
 		const newVersions = message.versions.length < 2 ? [message] : message.versions;
 		const storedVersions = result.value.versions || [];
 		// TODO: dedupe? There shouldn't be dupes...
-		const versions = (storedVersions.length < 1 ? [result.value] : storedVersions).concat(newVersions.map((nv) => serializeMessage(account, nv))).sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());
+		const versions = (storedVersions.length < 1 ? [result.value] : storedVersions).concat(newVersions.filter(nv => !storedVersions.find(sv => nv.serverId === sv.serverId)).map((nv) => serializeMessage(account, nv))).sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());
 		const head = {...versions[0]};
 		// Can't change primary key
 		head.serverIdBy = result.value.serverIdBy;