From ad922a38f6e0c2ce7a3ac855fb075b48489fa5d5 Mon Sep 17 00:00:00 2001 From: Adhiraj Date: Mon, 31 Aug 2020 20:03:22 +0530 Subject: [PATCH] loadMessages bug fix --- src/Tests/Tests.Misc.ts | 9 +++++---- src/WAConnection/7.MessagesExtra.ts | 10 ++++------ 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/Tests/Tests.Misc.ts b/src/Tests/Tests.Misc.ts index b2a5e9a..12b3296 100644 --- a/src/Tests/Tests.Misc.ts +++ b/src/Tests/Tests.Misc.ts @@ -116,13 +116,14 @@ WAConnectionTest('Misc', (conn) => { assert.ok (response.messages.length >= 0) } }) + it('should load a single message', async () => { - const {messages} = await conn.loadMessages (testJid, 10) + const {messages} = await conn.loadMessages (testJid, 25) for (var message of messages) { const loaded = await conn.loadMessage (testJid, message.key.id) - assert.equal (loaded.key.id, message.key.id) - await delay (1000) - } + assert.equal (loaded.key.id, message.key.id, `loaded message ${JSON.stringify(message)} incorrectly`) + await delay (500) + } }) it('should update presence', async () => { diff --git a/src/WAConnection/7.MessagesExtra.ts b/src/WAConnection/7.MessagesExtra.ts index be46a4a..bb20a2e 100644 --- a/src/WAConnection/7.MessagesExtra.ts +++ b/src/WAConnection/7.MessagesExtra.ts @@ -147,12 +147,10 @@ export class WAConnection extends Base { } /** Load a single message specified by the ID */ async loadMessage (jid: string, messageID: string) { - let messages: WAMessage[] - try { - messages = (await this.loadMessages (jid, 1, {id: messageID, fromMe: true})).messages - } catch { - messages = (await this.loadMessages (jid, 1, {id: messageID, fromMe: false})).messages - } + // load the message before the given message + let messages = (await this.loadMessages (jid, 1, {id: messageID, fromMe: true})).messages + if (!messages[0]) messages = (await this.loadMessages (jid, 1, {id: messageID, fromMe: false})).messages + // the message after the loaded message is the message required const actual = await this.loadMessages (jid, 1, messages[0] && messages[0].key, false) return actual.messages[0] }