Merge pull request #981 from yousseefspires/feat/delete-messages

feat: add logical or permanent message deletion based on env config
This commit is contained in:
Davidson Gomes 2024-10-15 17:44:15 -03:00 committed by GitHub
commit ec2b7f94f8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 51 additions and 1 deletions

View File

@ -41,6 +41,7 @@ DATABASE_SAVE_DATA_LABELS=true
DATABASE_SAVE_DATA_HISTORIC=true
DATABASE_SAVE_IS_ON_WHATSAPP=true
DATABASE_SAVE_IS_ON_WHATSAPP_DAYS=7
DATABASE_DELETE_MESSAGE=true
# RabbitMQ - Environment variables
RABBITMQ_ENABLED=false

View File

@ -3040,7 +3040,49 @@ export class BaileysStartupService extends ChannelStartupService {
public async deleteMessage(del: DeleteMessage) {
try {
return await this.client.sendMessage(del.remoteJid, { delete: del });
const response = await this.client.sendMessage(del.remoteJid, { delete: del });
if (response) {
const messageId = response.message?.protocolMessage?.key?.id;
if (messageId) {
const isLogicalDeleted = configService.get<Database>('DATABASE').DELETE_DATA.LOGICAL_MESSAGE_DELETE;
let message = await this.prismaRepository.message.findUnique({
where: { id: messageId },
});
if (isLogicalDeleted) {
if (!message) return response;
const existingKey = typeof message?.key === 'object' && message.key !== null ? message.key : {};
message = await this.prismaRepository.message.update({
where: { id: messageId },
data: {
key: {
...existingKey,
deleted: true,
},
},
});
} else {
await this.prismaRepository.message.deleteMany({
where: {
id: messageId,
},
});
}
this.sendDataWebhook(Events.MESSAGES_DELETE, {
id: message.id,
instanceId: message.instanceId,
key: message.key,
messageType: message.messageType,
status: message.status,
source: message.source,
messageTimestamp: message.messageTimestamp,
pushName: message.pushName,
participant: message.participant,
message: message.message,
});
}
}
return response;
} catch (error) {
throw new InternalServerErrorException('Error while deleting message for everyone', error?.toString());
}

View File

@ -55,8 +55,12 @@ export type Database = {
CONNECTION: DBConnection;
PROVIDER: string;
SAVE_DATA: SaveData;
DELETE_DATA: DeleteData;
};
export type DeleteData = {
LOGICAL_MESSAGE_DELETE: boolean;
};
export type EventsRabbitmq = {
APPLICATION_STARTUP: boolean;
INSTANCE_CREATE: boolean;
@ -344,6 +348,9 @@ export class ConfigService {
IS_ON_WHATSAPP: process.env?.DATABASE_SAVE_IS_ON_WHATSAPP === 'true',
IS_ON_WHATSAPP_DAYS: Number.parseInt(process.env?.DATABASE_SAVE_IS_ON_WHATSAPP_DAYS ?? '7'),
},
DELETE_DATA: {
LOGICAL_MESSAGE_DELETE: process.env?.DATABASE_DELETE_MESSAGE === 'true',
},
},
RABBITMQ: {
ENABLED: process.env?.RABBITMQ_ENABLED === 'true',