mirror of
https://github.com/FranP-code/Baileys.git
synced 2025-10-13 00:32:22 +00:00
feat: handle futureproofmessage
This commit is contained in:
37
src/Tests/test.messages.ts
Normal file
37
src/Tests/test.messages.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import { WAMessageContent } from '../Types'
|
||||
import { normalizeMessageContent } from '../Utils'
|
||||
|
||||
describe('Messages Tests', () => {
|
||||
|
||||
it('should correctly unwrap messages', () => {
|
||||
const CONTENT = { imageMessage: { } }
|
||||
expectRightContent(CONTENT)
|
||||
expectRightContent({
|
||||
ephemeralMessage: { message: CONTENT }
|
||||
})
|
||||
expectRightContent({
|
||||
viewOnceMessage: {
|
||||
message: {
|
||||
ephemeralMessage: { message: CONTENT }
|
||||
}
|
||||
}
|
||||
})
|
||||
expectRightContent({
|
||||
viewOnceMessage: {
|
||||
message: {
|
||||
viewOnceMessageV2: {
|
||||
message: {
|
||||
ephemeralMessage: { message: CONTENT }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
function expectRightContent(content: WAMessageContent) {
|
||||
expect(
|
||||
normalizeMessageContent(content)
|
||||
).toHaveProperty('imageMessage')
|
||||
}
|
||||
})
|
||||
})
|
||||
@@ -573,19 +573,27 @@ export const normalizeMessageContent = (content: WAMessageContent | null | undef
|
||||
return undefined
|
||||
}
|
||||
|
||||
for(;;) {
|
||||
const inner = content?.ephemeralMessage?.message ||
|
||||
content?.viewOnceMessage?.message ||
|
||||
content?.viewOnceMessageV2?.message ||
|
||||
content?.documentWithCaptionMessage?.message
|
||||
if(inner) {
|
||||
content = inner
|
||||
} else {
|
||||
// set max iterations to prevent an infinite loop
|
||||
for(let i = 0;i < 5;i++) {
|
||||
const inner = getFutureProofMessage(content)
|
||||
if(!inner) {
|
||||
break
|
||||
}
|
||||
|
||||
content = inner.message
|
||||
}
|
||||
|
||||
return content!
|
||||
|
||||
function getFutureProofMessage(message: typeof content) {
|
||||
return (
|
||||
message?.ephemeralMessage
|
||||
|| message?.viewOnceMessage
|
||||
|| message?.documentWithCaptionMessage
|
||||
|| message?.viewOnceMessageV2
|
||||
|| message?.editedMessage
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user