git » sdk » commit fa632e0

Fix several show-stopping MAM sync bugs

author Stephen Paul Weber
2024-11-03 04:03:02 UTC
committer Stephen Paul Weber
2024-11-03 04:03:02 UTC
parent 3117fbb396910bd40678272bd0a8d621aa8d4d67

Fix several show-stopping MAM sync bugs

snikket/Client.hx +1 -1
snikket/persistence/browser.js +2 -2

diff --git a/snikket/Client.hx b/snikket/Client.hx
index 86c1840..ee9bfaa 100644
--- a/snikket/Client.hx
+++ b/snikket/Client.hx
@@ -1294,7 +1294,7 @@ class Client extends EventEmitter {
 						}));
 					case ReactionUpdateStanza(update):
 						promises.push(new thenshim.Promise((resolve, reject) -> {
-							persistence.storeReaction(accountId(), update, (m)->{});
+							persistence.storeReaction(accountId(), update, resolve);
 						}));
 					default:
 						// ignore
diff --git a/snikket/persistence/browser.js b/snikket/persistence/browser.js
index a696646..c0901c2 100644
--- a/snikket/persistence/browser.js
+++ b/snikket/persistence/browser.js
@@ -340,11 +340,11 @@ const browser = (dbname, tokenize, stemmer) => {
 				const store = tx.objectStore("messages");
 				return Promise.all([
 					promisifyRequest(store.index("localId").openCursor(IDBKeyRange.only([account, message.localId || [], message.chatId()]))),
-					promisifyRequest(tx.objectStore("reactions").openCursor(IDBKeyRange.only([account, message.chatId(), message.senderId(), message.localId])))
+					promisifyRequest(tx.objectStore("reactions").openCursor(IDBKeyRange.only([account, message.chatId(), message.senderId(), message.localId || ""])))
 				]).then(([result, reactionResult]) => {
 					if (reactionResult?.value?.append && message.html().trim() == "") {
 						this.getMessage(account, message.chatId(), reactionResult.value.serverId, reactionResult.value.localId, (reactToMessage) => {
-							const reactions = Array.from(reactToMessage.reactions.keys()).filter((r) => !reactionResult.value.append.includes(r));
+							const reactions = (reactToMessage ? Array.from(reactToMessage.reactions.keys()) : []).filter((r) => !reactionResult.value.append.includes(r));
 							this.storeReaction(account, new snikket.ReactionUpdate(message.localId, reactionResult.value.serverId, reactionResult.value.serverIdBy, reactionResult.value.localId, message.chatId(), message.timestamp, message.senderId(), reactions), callback);
 						});
 						return true;