feat: add readMessages function

This commit is contained in:
Adhiraj Singh
2022-04-06 09:30:32 +05:30
parent 6d4fc87169
commit 5aa64f2c39
3 changed files with 44 additions and 10 deletions

View File

@@ -2,8 +2,8 @@
import NodeCache from 'node-cache'
import { proto } from '../../WAProto'
import { WA_DEFAULT_EPHEMERAL } from '../Defaults'
import { AnyMessageContent, MediaConnInfo, MessageReceiptType, MessageRelayOptions, MiscMessageGenerationOptions, SocketConfig } from '../Types'
import { encodeWAMessage, encryptSenderKeyMsgSignalProto, encryptSignalProto, extractDeviceJids, generateMessageID, generateWAMessage, getWAUploadToServer, jidToSignalProtocolAddress, parseAndInjectE2ESessions, unixTimestampSeconds } from '../Utils'
import { AnyMessageContent, MediaConnInfo, MessageReceiptType, MessageRelayOptions, MiscMessageGenerationOptions, SocketConfig, WAMessageKey } from '../Types'
import { aggregateMessageKeysNotFromMe, encodeWAMessage, encryptSenderKeyMsgSignalProto, encryptSignalProto, extractDeviceJids, generateMessageID, generateWAMessage, getWAUploadToServer, jidToSignalProtocolAddress, parseAndInjectE2ESessions, unixTimestampSeconds } from '../Utils'
import { BinaryNode, BinaryNodeAttributes, getBinaryNodeChild, getBinaryNodeChildren, isJidGroup, isJidUser, jidDecode, jidEncode, jidNormalizedUser, JidWithDevice, reduceBinaryNodeToDictionary, S_WHATSAPP_NET } from '../WABinary'
import { makeGroupsSocket } from './groups'
@@ -131,6 +131,14 @@ export const makeMessagesSocket = (config: SocketConfig) => {
return sendReceipt(jid, participant, messageIds, readType)
}
/** Bulk read messages. Keys can be from different chats & participants */
const readMessages = async(keys: WAMessageKey[]) => {
const recps = aggregateMessageKeysNotFromMe(keys)
for(const { jid, participant, messageIds } of recps) {
await sendReadReceipt(jid, participant, messageIds)
}
}
const getUSyncDevices = async(jids: string[], ignoreZeroDevices: boolean) => {
const deviceResults: JidWithDevice[] = []
@@ -447,6 +455,7 @@ export const makeMessagesSocket = (config: SocketConfig) => {
relayMessage,
sendReceipt,
sendReadReceipt,
readMessages,
refreshMediaConn,
waUploadToServer,
fetchPrivacySettings,