This commit is contained in:
Adhiraj
2020-09-04 13:49:26 +05:30
parent 1340279cdb
commit fb51a3f2cd
3 changed files with 19 additions and 16 deletions

View File

@@ -36,8 +36,8 @@ export const WAConnectionTest = (name: string, func: (conn: WAConnection) => voi
)
export const assertChatDBIntegrity = (conn: WAConnection) => {
conn.chats.all ().forEach (chat => (
assert.equal (
chat.messages.sort ((m1, m2) => toNumber(m1.messageTimestamp)-toNumber(m2.messageTimestamp)),
assert.deepEqual (
[...chat.messages].sort ((m1, m2) => toNumber(m1.messageTimestamp)-toNumber(m2.messageTimestamp)),
chat.messages
)
))

View File

@@ -28,14 +28,15 @@ WAConnectionTest('Messages', conn => {
assert.ok (received.description)
})
it('should quote a message', async () => {
const {messages} = await conn.loadMessages(testJid, 2)
const message = await sendAndRetreiveMessage(conn, 'hello fren 2', MessageType.extendedText, {
quoted: messages[0],
})
assert.strictEqual(message.message.extendedTextMessage.contextInfo.stanzaId, messages[0].key.id)
const quoted = (await conn.loadMessages(testJid, 2)).messages[0]
const message = await sendAndRetreiveMessage(conn, 'hello fren 2', MessageType.extendedText, { quoted })
assert.strictEqual(
message.message.extendedTextMessage.contextInfo.stanzaId,
quoted.key.id
)
assert.strictEqual(
message.message.extendedTextMessage.contextInfo.participant,
messages[0].key.fromMe ? conn.user.jid : messages[0].key.id
quoted.key.fromMe ? conn.user.jid : quoted.key.id
)
})
it('should send a gif', async () => {
@@ -65,12 +66,12 @@ WAConnectionTest('Messages', conn => {
//const message2 = await sendAndRetreiveMessage (conn, 'this is a quote', MessageType.extendedText)
})
it('should send an image & quote', async () => {
const {messages} = await conn.loadMessages(testJid, 1)
const quoted = (await conn.loadMessages(testJid, 2)).messages[0]
const content = await fs.readFile('./Media/meme.jpeg')
const message = await sendAndRetreiveMessage(conn, content, MessageType.image, { quoted: messages[0] })
const message = await sendAndRetreiveMessage(conn, content, MessageType.image, { quoted })
await conn.downloadMediaMessage(message) // check for successful decoding
assert.strictEqual(message.message.imageMessage.contextInfo.stanzaId, messages[0].key.id)
assert.strictEqual(message.message.imageMessage.contextInfo.stanzaId, quoted.key.id)
})
it('should send a message & delete it', async () => {
const message = await sendAndRetreiveMessage(conn, 'hello fren', MessageType.text)

View File

@@ -214,15 +214,17 @@ export class WAConnection extends Base {
} else {
const messages = chat.messages
const messageTimestamp = toNumber (message.messageTimestamp)
const idx = messages.findIndex(m => toNumber(m.messageTimestamp) >= messageTimestamp)
let idx = messages.length-1
for (idx; idx >= 0; idx--) {
if (toNumber(messages[idx].messageTimestamp) <= messageTimestamp) {
break
}
}
// if the message is already there
if (messages[idx]?.key.id === message.key.id) return
//this.log (`adding message ID: ${messageTimestamp} to ${JSON.stringify(messages.map(m => toNumber(messageTimestamp)))}`, MessageLogLevel.info)
if (idx < 0) messages.push(message) // add to end
else if (toNumber(messages[idx].messageTimestamp) === toNumber(message.messageTimestamp)) messages.splice (idx+1, 0, message) // insert
else messages.splice (idx, 0, message) // insert
messages.splice (idx+1, 0, message) // insert
messages.splice(0, messages.length-this.maxCachedMessages)
// only update if it's an actual message