mirror of
https://github.com/FranP-code/Baileys.git
synced 2025-10-13 00:32:22 +00:00
Disappearing messages fix
- Fixes crash issue on groups - Fixes (i) on group chats when disappearing messages is on
This commit is contained in:
@@ -254,8 +254,6 @@ export class WAConnection extends Base {
|
|||||||
if (chat.messages.upsert(message).length) {
|
if (chat.messages.upsert(message).length) {
|
||||||
const chatUpdate: Partial<WAChat> = { jid, messages: newMessagesDB([ message ]) }
|
const chatUpdate: Partial<WAChat> = { jid, messages: newMessagesDB([ message ]) }
|
||||||
this.emit ('chat-update', chatUpdate)
|
this.emit ('chat-update', chatUpdate)
|
||||||
// emit deprecated
|
|
||||||
this.emit ('message-update', message)
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.logger.debug ({ unhandled: true }, 'received message update for non-present message from ' + jid)
|
this.logger.debug ({ unhandled: true }, 'received message update for non-present message from ' + jid)
|
||||||
@@ -578,6 +576,18 @@ export class WAConnection extends Base {
|
|||||||
const emitGroupUpdate = (update: Partial<WAGroupMetadata>) => this.emitGroupUpdate(jid, update)
|
const emitGroupUpdate = (update: Partial<WAGroupMetadata>) => this.emitGroupUpdate(jid, update)
|
||||||
|
|
||||||
switch (message.messageStubType) {
|
switch (message.messageStubType) {
|
||||||
|
case WA_MESSAGE_STUB_TYPE.CHANGE_EPHEMERAL_SETTING:
|
||||||
|
chatUpdate.eph_setting_ts = message.messageTimestamp.toString()
|
||||||
|
chatUpdate.ephemeral = message.messageStubParameters[0]
|
||||||
|
|
||||||
|
if (+chatUpdate.ephemeral) {
|
||||||
|
chat.eph_setting_ts = chatUpdate.eph_setting_ts
|
||||||
|
chat.ephemeral = chatUpdate.ephemeral
|
||||||
|
} else {
|
||||||
|
delete chat.eph_setting_ts
|
||||||
|
delete chat.ephemeral
|
||||||
|
}
|
||||||
|
break
|
||||||
case WA_MESSAGE_STUB_TYPE.GROUP_PARTICIPANT_LEAVE:
|
case WA_MESSAGE_STUB_TYPE.GROUP_PARTICIPANT_LEAVE:
|
||||||
case WA_MESSAGE_STUB_TYPE.GROUP_PARTICIPANT_REMOVE:
|
case WA_MESSAGE_STUB_TYPE.GROUP_PARTICIPANT_REMOVE:
|
||||||
participants = message.messageStubParameters.map (whatsappID)
|
participants = message.messageStubParameters.map (whatsappID)
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import {
|
|||||||
WATextMessage,
|
WATextMessage,
|
||||||
WAMessageContent, WAMetric, WAFlag, WAMessage, BaileysError, WA_MESSAGE_STATUS_TYPE, WAMessageProto, MediaConnInfo, MessageTypeProto, URL_REGEX, WAUrlInfo, WA_DEFAULT_EPHEMERAL, WAMediaUpload
|
WAMessageContent, WAMetric, WAFlag, WAMessage, BaileysError, WA_MESSAGE_STATUS_TYPE, WAMessageProto, MediaConnInfo, MessageTypeProto, URL_REGEX, WAUrlInfo, WA_DEFAULT_EPHEMERAL, WAMediaUpload
|
||||||
} from './Constants'
|
} from './Constants'
|
||||||
import { generateMessageID, extensionForMediaMessage, whatsappID, unixTimestampSeconds, getAudioDuration, newMessagesDB, encryptedStream, decryptMediaMessageBuffer, generateThumbnail } from './Utils'
|
import { isGroupID, generateMessageID, extensionForMediaMessage, whatsappID, unixTimestampSeconds, getAudioDuration, newMessagesDB, encryptedStream, decryptMediaMessageBuffer, generateThumbnail } from './Utils'
|
||||||
import { Mutex } from './Mutex'
|
import { Mutex } from './Mutex'
|
||||||
import { Readable } from 'stream'
|
import { Readable } from 'stream'
|
||||||
|
|
||||||
@@ -57,13 +57,23 @@ export class WAConnection extends Base {
|
|||||||
* For the default see WA_DEFAULT_EPHEMERAL
|
* For the default see WA_DEFAULT_EPHEMERAL
|
||||||
*/
|
*/
|
||||||
async toggleDisappearingMessages(jid: string, ephemeralExpiration?: number, opts: { waitForAck: boolean } = { waitForAck: true }) {
|
async toggleDisappearingMessages(jid: string, ephemeralExpiration?: number, opts: { waitForAck: boolean } = { waitForAck: true }) {
|
||||||
const message = this.prepareMessageFromContent(
|
if(isGroupID(jid)) {
|
||||||
jid,
|
const tag = this.generateMessageTag(true)
|
||||||
this.prepareDisappearingMessageSettingContent(ephemeralExpiration),
|
await this.setQuery([
|
||||||
{}
|
[
|
||||||
)
|
'group',
|
||||||
await this.relayWAMessage(message, opts)
|
{ id: tag, jid, tyoe: 'prop', author: this.user.jid },
|
||||||
return message
|
[ [ 'ephemeral', { value: ephemeralExpiration.toString() }, null ] ]
|
||||||
|
]
|
||||||
|
], [WAMetric.group, WAFlag.other], tag)
|
||||||
|
} else {
|
||||||
|
const message = this.prepareMessageFromContent(
|
||||||
|
jid,
|
||||||
|
this.prepareDisappearingMessageSettingContent(ephemeralExpiration),
|
||||||
|
{}
|
||||||
|
)
|
||||||
|
await this.relayWAMessage(message, opts)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/** Prepares the message content */
|
/** Prepares the message content */
|
||||||
async prepareMessageContent (message: string | WATextMessage | WALocationMessage | WAContactMessage | WAContactsArrayMessage | WAMediaUpload, type: MessageType, options: MessageOptions) {
|
async prepareMessageContent (message: string | WATextMessage | WALocationMessage | WAContactMessage | WAContactsArrayMessage | WAMediaUpload, type: MessageType, options: MessageOptions) {
|
||||||
|
|||||||
@@ -317,8 +317,6 @@ export class WAConnection extends Base {
|
|||||||
|
|
||||||
const chatUpdate: Partial<WAChat> = { jid: messageKey.remoteJid, messages: newMessagesDB([ message ]) }
|
const chatUpdate: Partial<WAChat> = { jid: messageKey.remoteJid, messages: newMessagesDB([ message ]) }
|
||||||
this.emit ('chat-update', chatUpdate)
|
this.emit ('chat-update', chatUpdate)
|
||||||
// emit deprecated
|
|
||||||
this.emit ('message-update', message)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
|
|||||||
@@ -273,6 +273,7 @@ export const STORIES_JID = 'status@broadcast'
|
|||||||
|
|
||||||
export enum WAFlag {
|
export enum WAFlag {
|
||||||
available = 160,
|
available = 160,
|
||||||
|
other = 136, // don't know this one
|
||||||
ignore = 1 << 7,
|
ignore = 1 << 7,
|
||||||
acknowledge = 1 << 6,
|
acknowledge = 1 << 6,
|
||||||
unavailable = 1 << 4,
|
unavailable = 1 << 4,
|
||||||
|
|||||||
Reference in New Issue
Block a user