Skip to content

Commit ec2b7f9

Browse files
Merge pull request #981 from yousseefspires/feat/delete-messages
feat: add logical or permanent message deletion based on env config
2 parents b324e22 + 45acc6d commit ec2b7f9

File tree

3 files changed

+51
-1
lines changed

3 files changed

+51
-1
lines changed

.env.example

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ DATABASE_SAVE_DATA_LABELS=true
4141
DATABASE_SAVE_DATA_HISTORIC=true
4242
DATABASE_SAVE_IS_ON_WHATSAPP=true
4343
DATABASE_SAVE_IS_ON_WHATSAPP_DAYS=7
44+
DATABASE_DELETE_MESSAGE=true
4445

4546
# RabbitMQ - Environment variables
4647
RABBITMQ_ENABLED=false

src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3040,7 +3040,49 @@ export class BaileysStartupService extends ChannelStartupService {
30403040

30413041
public async deleteMessage(del: DeleteMessage) {
30423042
try {
3043-
return await this.client.sendMessage(del.remoteJid, { delete: del });
3043+
const response = await this.client.sendMessage(del.remoteJid, { delete: del });
3044+
if (response) {
3045+
const messageId = response.message?.protocolMessage?.key?.id;
3046+
if (messageId) {
3047+
const isLogicalDeleted = configService.get<Database>('DATABASE').DELETE_DATA.LOGICAL_MESSAGE_DELETE;
3048+
let message = await this.prismaRepository.message.findUnique({
3049+
where: { id: messageId },
3050+
});
3051+
if (isLogicalDeleted) {
3052+
if (!message) return response;
3053+
const existingKey = typeof message?.key === 'object' && message.key !== null ? message.key : {};
3054+
message = await this.prismaRepository.message.update({
3055+
where: { id: messageId },
3056+
data: {
3057+
key: {
3058+
...existingKey,
3059+
deleted: true,
3060+
},
3061+
},
3062+
});
3063+
} else {
3064+
await this.prismaRepository.message.deleteMany({
3065+
where: {
3066+
id: messageId,
3067+
},
3068+
});
3069+
}
3070+
this.sendDataWebhook(Events.MESSAGES_DELETE, {
3071+
id: message.id,
3072+
instanceId: message.instanceId,
3073+
key: message.key,
3074+
messageType: message.messageType,
3075+
status: message.status,
3076+
source: message.source,
3077+
messageTimestamp: message.messageTimestamp,
3078+
pushName: message.pushName,
3079+
participant: message.participant,
3080+
message: message.message,
3081+
});
3082+
}
3083+
}
3084+
3085+
return response;
30443086
} catch (error) {
30453087
throw new InternalServerErrorException('Error while deleting message for everyone', error?.toString());
30463088
}

src/config/env.config.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,12 @@ export type Database = {
5555
CONNECTION: DBConnection;
5656
PROVIDER: string;
5757
SAVE_DATA: SaveData;
58+
DELETE_DATA: DeleteData;
5859
};
5960

61+
export type DeleteData = {
62+
LOGICAL_MESSAGE_DELETE: boolean;
63+
};
6064
export type EventsRabbitmq = {
6165
APPLICATION_STARTUP: boolean;
6266
INSTANCE_CREATE: boolean;
@@ -344,6 +348,9 @@ export class ConfigService {
344348
IS_ON_WHATSAPP: process.env?.DATABASE_SAVE_IS_ON_WHATSAPP === 'true',
345349
IS_ON_WHATSAPP_DAYS: Number.parseInt(process.env?.DATABASE_SAVE_IS_ON_WHATSAPP_DAYS ?? '7'),
346350
},
351+
DELETE_DATA: {
352+
LOGICAL_MESSAGE_DELETE: process.env?.DATABASE_DELETE_MESSAGE === 'true',
353+
},
347354
},
348355
RABBITMQ: {
349356
ENABLED: process.env?.RABBITMQ_ENABLED === 'true',

0 commit comments

Comments
 (0)