[core] Separate group ACK events from message.ack to group.ack (#29)
This commit is contained in:
1 parent
7a54b6b599
commit
1a91e7d722
6 files changed
+34
-10
No files matched your search
@@ -548,11 +548,20 @@ export class WhatsappSessionGoWSCore extends WhatsappSession {
|
||||
onlyEvent(WhatsMeowEvent.RECEIPT),
|
||||
filter((r: any) => this.jids.include(r?.Chat)),
|
||||
);
|
||||
const messageAck$ = receipt$.pipe(
|
||||
const [receiptGroups$, receiptContacts$] = partition(
|
||||
receipt$,
|
||||
(r: any) => isJidGroup(r?.Chat || r?.Info?.Chat),
|
||||
);
|
||||
const messageAckGroups$ = receiptGroups$.pipe(
|
||||
mergeMap(this.receiptToMessageAck.bind(this)),
|
||||
DistinctAck(),
|
||||
);
|
||||
this.events2.get(WAHAEvents.MESSAGE_ACK).switch(messageAck$);
|
||||
const messageAckContacts$ = receiptContacts$.pipe(
|
||||
mergeMap(this.receiptToMessageAck.bind(this)),
|
||||
DistinctAck(),
|
||||
);
|
||||
this.events2.get(WAHAEvents.GROUP_ACK).switch(messageAckGroups$);
|
||||
this.events2.get(WAHAEvents.MESSAGE_ACK).switch(messageAckContacts$);
|
||||
|
||||
const messageReactions$ = messages$.pipe(
|
||||
filter((msg) => !!msg?.Message?.reactionMessage),
|
||||
|
||||
@@ -2074,10 +2074,11 @@ export class WhatsappSessionNoWebCore extends WhatsappSession {
|
||||
filter(isMine), // ack comes only for MY messages
|
||||
map(this.convertMessageReceiptUpdateToMessageAck.bind(this)),
|
||||
);
|
||||
const messageAck$ = merge(messageAckDirect$, messageAckGroups$).pipe(
|
||||
DistinctAck(),
|
||||
);
|
||||
this.events2.get(WAHAEvents.MESSAGE_ACK).switch(messageAck$);
|
||||
const messageAckDirectFinal$ = messageAckDirect$.pipe(DistinctAck());
|
||||
const messageAckGroupsFinal$ = messageAckGroups$.pipe(DistinctAck());
|
||||
|
||||
this.events2.get(WAHAEvents.MESSAGE_ACK).switch(messageAckDirectFinal$);
|
||||
this.events2.get(WAHAEvents.GROUP_ACK).switch(messageAckGroupsFinal$);
|
||||
|
||||
//
|
||||
// Other
|
||||
|
||||
@@ -1699,10 +1699,11 @@ export class WhatsappSessionWebJSCore extends WhatsappSession {
|
||||
filter((ack) => this.jids.include(ack.to)),
|
||||
);
|
||||
|
||||
const messageAckAll$ = merge(messagesAckDM$, messageAckGroups$);
|
||||
const messageAckDMFinal$ = messagesAckDM$.pipe(DistinctAck());
|
||||
const messageAckGroupsFinal$ = messageAckGroups$.pipe(DistinctAck());
|
||||
|
||||
const messageAck$ = messageAckAll$.pipe(DistinctAck());
|
||||
this.events2.get(WAHAEvents.MESSAGE_ACK).switch(messageAck$);
|
||||
this.events2.get(WAHAEvents.MESSAGE_ACK).switch(messageAckDMFinal$);
|
||||
this.events2.get(WAHAEvents.GROUP_ACK).switch(messageAckGroupsFinal$);
|
||||
|
||||
//
|
||||
// Others
|
||||
|
||||
@@ -16,6 +16,7 @@ export enum WAHAEvents {
|
||||
GROUP_V2_LEAVE = 'group.v2.leave',
|
||||
GROUP_V2_UPDATE = 'group.v2.update',
|
||||
GROUP_V2_PARTICIPANTS = 'group.v2.participants',
|
||||
GROUP_ACK = 'group.ack',
|
||||
PRESENCE_UPDATE = 'presence.update',
|
||||
POLL_VOTE = 'poll.vote',
|
||||
POLL_VOTE_FAILED = 'poll.vote.failed',
|
||||
|
||||
@@ -207,13 +207,23 @@ export class WAHAWebhookMessageAny extends WAHAWebhook {
|
||||
export class WAHAWebhookMessageAck extends WAHAWebhook {
|
||||
@ApiProperty({
|
||||
description:
|
||||
'Receive events when server or recipient gets the message, read or played it.',
|
||||
'Receive events when server or recipient gets the message, read or played it (contacts only).',
|
||||
})
|
||||
event = WAHAEvents.MESSAGE_ACK;
|
||||
|
||||
payload: WAMessageAckBody;
|
||||
}
|
||||
|
||||
export class WAHAWebhookGroupAck extends WAHAWebhook {
|
||||
@ApiProperty({
|
||||
description:
|
||||
'Receive events when participants in a group read or play messages.',
|
||||
})
|
||||
event = WAHAEvents.GROUP_ACK;
|
||||
|
||||
payload: WAMessageAckBody;
|
||||
}
|
||||
|
||||
export class WAHAWebhookMessageRevoked extends WAHAWebhook {
|
||||
@ApiProperty({
|
||||
description:
|
||||
|
||||
@@ -21,6 +21,7 @@ import {
|
||||
WAHAWebhookMessage,
|
||||
WAHAWebhookMessageAck,
|
||||
WAHAWebhookMessageAny,
|
||||
WAHAWebhookGroupAck,
|
||||
WAHAWebhookMessageEdited,
|
||||
WAHAWebhookMessageReaction,
|
||||
WAHAWebhookMessageRevoked,
|
||||
@@ -37,6 +38,7 @@ const WAHA_WEBHOOKS = [
|
||||
WAHAWebhookMessageReaction,
|
||||
WAHAWebhookMessageAny,
|
||||
WAHAWebhookMessageAck,
|
||||
WAHAWebhookGroupAck,
|
||||
WAHAWebhookMessageRevoked,
|
||||
WAHAWebhookMessageEdited,
|
||||
WebhookGroupV2Join,
|
||||
|
||||
Reference in new issue
Block a user