diff --git a/src/Types/Message.ts b/src/Types/Message.ts index 2ef4b34..ec86db7 100644 --- a/src/Types/Message.ts +++ b/src/Types/Message.ts @@ -9,7 +9,7 @@ import { CacheStore } from './Socket' // export the WAMessage Prototypes export { proto as WAProto } -export type WAMessage = proto.IWebMessageInfo +export type WAMessage = proto.IWebMessageInfo & { key: WAMessageKey } export type WAMessageContent = proto.IMessage export type WAContactMessage = proto.Message.IContactMessage export type WAContactsArrayMessage = proto.Message.IContactsArrayMessage @@ -19,6 +19,7 @@ export type WAMessageKey = proto.IMessageKey & { senderPn?: string participantLid?: string participantPn?: string + isViewOnce?: boolean } export type WATextMessage = proto.Message.IExtendedTextMessage export type WAContextInfo = proto.IContextInfo diff --git a/src/Utils/decode-wa-message.ts b/src/Utils/decode-wa-message.ts index 3a470f7..c7f71af 100644 --- a/src/Utils/decode-wa-message.ts +++ b/src/Utils/decode-wa-message.ts @@ -1,6 +1,6 @@ import { Boom } from '@hapi/boom' import { proto } from '../../WAProto' -import { SignalRepository, WAMessageKey } from '../Types' +import { SignalRepository, WAMessage, WAMessageKey } from '../Types' import { areJidsSameUser, BinaryNode, @@ -118,7 +118,7 @@ export function decodeMessageNode(stanza: BinaryNode, meId: string, meLid: strin ...(msgType === 'newsletter' && stanza.attrs.server_id ? { server_id: stanza.attrs.server_id } : {}) } - const fullMessage: proto.IWebMessageInfo = { + const fullMessage: WAMessage = { key, messageTimestamp: +stanza.attrs.t, pushName: pushname, @@ -158,6 +158,10 @@ export const decryptMessageNode = ( fullMessage.verifiedBizName = details.verifiedName } + if (tag === 'unavailable' && attrs.type === 'view_once') { + fullMessage.key.isViewOnce = true + } + if (tag !== 'enc' && tag !== 'plaintext') { continue }