diff --git a/src/Connection/messages.ts b/src/Connection/messages.ts index 2fcf818..f436478 100644 --- a/src/Connection/messages.ts +++ b/src/Connection/messages.ts @@ -103,6 +103,10 @@ const makeMessagesSocket = (config: SocketConfig) => { jid, t: +toNumber(message.messageTimestamp) } + + const emitGroupUpdate = (update: Partial) => { + ev.emit('groups.update', [ { id: jid, ...update } ]) + } // add to count if the message isn't from me & there exists a message if(!message.key.fromMe && message.message) { chatUpdate.count = 1 @@ -121,6 +125,10 @@ const makeMessagesSocket = (config: SocketConfig) => { ) { chatUpdate.eph_setting_ts = message.messageTimestamp.toString() chatUpdate.ephemeral = ephemeralProtocolMsg.ephemeralExpiration.toString() + + if(isGroupID(jid)) { + emitGroupUpdate({ ephemeralDuration: ephemeralProtocolMsg.ephemeralExpiration || null }) + } } const protocolMessage = message.message?.protocolMessage // if it's a message to delete another message @@ -150,14 +158,14 @@ const makeMessagesSocket = (config: SocketConfig) => { const emitParticipantsUpdate = (action: ParticipantAction) => ( ev.emit('group-participants.update', { jid, participants, action }) ) - const emitGroupUpdate = (update: Partial) => { - ev.emit('groups.update', [ { id: jid, ...update } ]) - } - + switch (message.messageStubType) { case WAMessageStubType.CHANGE_EPHEMERAL_SETTING: chatUpdate.eph_setting_ts = message.messageTimestamp.toString() chatUpdate.ephemeral = message.messageStubParameters[0] + if(isGroupID(jid)) { + emitGroupUpdate({ ephemeralDuration: +message.messageStubParameters[0] || null }) + } break case WAMessageStubType.GROUP_PARTICIPANT_LEAVE: case WAMessageStubType.GROUP_PARTICIPANT_REMOVE: diff --git a/src/Types/GroupMetadata.ts b/src/Types/GroupMetadata.ts index 9aedf6d..5e86b97 100644 --- a/src/Types/GroupMetadata.ts +++ b/src/Types/GroupMetadata.ts @@ -18,6 +18,7 @@ export interface GroupMetadata { announce?: 'true' | 'false' // Baileys modified array participants: GroupParticipant[] + ephemeralDuration?: number } diff --git a/src/Types/Message.ts b/src/Types/Message.ts index 51c038a..20ed675 100644 --- a/src/Types/Message.ts +++ b/src/Types/Message.ts @@ -111,7 +111,7 @@ export type MiscMessageGenerationOptions = { /** disappearing messages settings */ ephemeralOptions?: { expiration: number | string - eph_setting_ts: number | string + eph_setting_ts?: number | string } } export type MessageGenerationOptionsFromContent = MiscMessageGenerationOptions & { diff --git a/src/Utils/messages.ts b/src/Utils/messages.ts index 6bb1b4a..dd3a455 100644 --- a/src/Utils/messages.ts +++ b/src/Utils/messages.ts @@ -312,7 +312,7 @@ export const generateWAMessageFromContent = ( message[key].contextInfo = { ...(message[key].contextInfo || {}), expiration: options.ephemeralOptions.expiration || WA_DEFAULT_EPHEMERAL, - ephemeralSettingTimestamp: options.ephemeralOptions.eph_setting_ts.toString() + ephemeralSettingTimestamp: options.ephemeralOptions.eph_setting_ts?.toString() } message = { ephemeralMessage: {