feat: handle futureproofmessage

This commit is contained in:
Adhiraj Singh
2022-12-23 15:01:05 +05:30
parent 474dc78d24
commit 5041be776e
2 changed files with 53 additions and 8 deletions

View 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')
}
})
})

View File

@@ -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
)
}
}
/**