Skip to content

Commit 238b5c2

Browse files
committed
feat: add logical or permanent message deletion based on env config
1 parent b1e75c9 commit 238b5c2

File tree

3 files changed

+52
-1
lines changed

3 files changed

+52
-1
lines changed

.env.example

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ DATABASE_SAVE_DATA_LABELS=true
4343
DATABASE_SAVE_DATA_HISTORIC=true
4444
DATABASE_SAVE_IS_ON_WHATSAPP=true
4545
DATABASE_SAVE_IS_ON_WHATSAPP_DAYS=7
46+
DATABASE_DELETE_MESSAGE=true
4647

4748
# RabbitMQ - Environment variables
4849
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
@@ -2625,7 +2625,49 @@ export class BaileysStartupService extends ChannelStartupService {
26252625

26262626
public async deleteMessage(del: DeleteMessage) {
26272627
try {
2628-
return await this.client.sendMessage(del.remoteJid, { delete: del });
2628+
const response = await this.client.sendMessage(del.remoteJid, { delete: del });
2629+
if (response) {
2630+
const messageId = response.message?.protocolMessage?.key?.id;
2631+
if (messageId) {
2632+
const isLogicalDeleted = configService.get<Database>('DATABASE').DELETE_DATA.LOGICAL_MESSAGE_DELETE;
2633+
let message = await this.prismaRepository.message.findUnique({
2634+
where: { id: messageId },
2635+
});
2636+
if (isLogicalDeleted) {
2637+
if (!message) return response;
2638+
const existingKey = typeof message?.key === 'object' && message.key !== null ? message.key : {};
2639+
message = await this.prismaRepository.message.update({
2640+
where: { id: messageId },
2641+
data: {
2642+
key: {
2643+
...existingKey,
2644+
deleted: true,
2645+
},
2646+
},
2647+
});
2648+
} else {
2649+
await this.prismaRepository.message.deleteMany({
2650+
where: {
2651+
id: messageId,
2652+
},
2653+
});
2654+
}
2655+
this.sendDataWebhook(Events.MESSAGES_DELETE, {
2656+
id: message.id,
2657+
instanceId: message.instanceId,
2658+
key: message.key,
2659+
messageType: message.messageType,
2660+
status: message.status,
2661+
source: message.source,
2662+
messageTimestamp: message.messageTimestamp,
2663+
pushName: message.pushName,
2664+
participant: message.participant,
2665+
message: message.message,
2666+
});
2667+
}
2668+
}
2669+
2670+
return response;
26292671
} catch (error) {
26302672
throw new InternalServerErrorException('Error while deleting message for everyone', error?.toString());
26312673
}

src/config/env.config.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ export type Database = {
5555
CONNECTION: DBConnection;
5656
PROVIDER: string;
5757
SAVE_DATA: SaveData;
58+
DELETE_DATA: DeleteData;
59+
};
60+
61+
export type DeleteData = {
62+
LOGICAL_MESSAGE_DELETE: boolean;
5863
};
5964

6065
export type EventsRabbitmq = {
@@ -309,6 +314,9 @@ export class ConfigService {
309314
IS_ON_WHATSAPP: process.env?.DATABASE_SAVE_IS_ON_WHATSAPP === 'true',
310315
IS_ON_WHATSAPP_DAYS: Number.parseInt(process.env?.DATABASE_SAVE_IS_ON_WHATSAPP_DAYS ?? '7'),
311316
},
317+
DELETE_DATA: {
318+
LOGICAL_MESSAGE_DELETE: process.env?.DATABASE_DELETE_MESSAGE === 'true',
319+
},
312320
},
313321
RABBITMQ: {
314322
ENABLED: process.env?.RABBITMQ_ENABLED === 'true',

0 commit comments

Comments
 (0)