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) {
|
||||
const chatUpdate: Partial<WAChat> = { jid, messages: newMessagesDB([ message ]) }
|
||||
this.emit ('chat-update', chatUpdate)
|
||||
// emit deprecated
|
||||
this.emit ('message-update', message)
|
||||
}
|
||||
} else {
|
||||
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)
|
||||
|
||||
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_REMOVE:
|
||||
participants = message.messageStubParameters.map (whatsappID)
|
||||
|
||||
@@ -12,7 +12,7 @@ import {
|
||||
WATextMessage,
|
||||
WAMessageContent, WAMetric, WAFlag, WAMessage, BaileysError, WA_MESSAGE_STATUS_TYPE, WAMessageProto, MediaConnInfo, MessageTypeProto, URL_REGEX, WAUrlInfo, WA_DEFAULT_EPHEMERAL, WAMediaUpload
|
||||
} 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 { Readable } from 'stream'
|
||||
|
||||
@@ -57,13 +57,23 @@ export class WAConnection extends Base {
|
||||
* For the default see WA_DEFAULT_EPHEMERAL
|
||||
*/
|
||||
async toggleDisappearingMessages(jid: string, ephemeralExpiration?: number, opts: { waitForAck: boolean } = { waitForAck: true }) {
|
||||
const message = this.prepareMessageFromContent(
|
||||
jid,
|
||||
this.prepareDisappearingMessageSettingContent(ephemeralExpiration),
|
||||
{}
|
||||
)
|
||||
await this.relayWAMessage(message, opts)
|
||||
return message
|
||||
if(isGroupID(jid)) {
|
||||
const tag = this.generateMessageTag(true)
|
||||
await this.setQuery([
|
||||
[
|
||||
'group',
|
||||
{ id: tag, jid, tyoe: 'prop', author: this.user.jid },
|
||||
[ [ '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 */
|
||||
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 ]) }
|
||||
this.emit ('chat-update', chatUpdate)
|
||||
// emit deprecated
|
||||
this.emit ('message-update', message)
|
||||
}
|
||||
}
|
||||
return result
|
||||
|
||||
@@ -273,6 +273,7 @@ export const STORIES_JID = 'status@broadcast'
|
||||
|
||||
export enum WAFlag {
|
||||
available = 160,
|
||||
other = 136, // don't know this one
|
||||
ignore = 1 << 7,
|
||||
acknowledge = 1 << 6,
|
||||
unavailable = 1 << 4,
|
||||
|
||||
Reference in New Issue
Block a user