diff --git a/src/api/controllers/settings.controller.ts b/src/api/controllers/settings.controller.ts index 15563647..c322c634 100644 --- a/src/api/controllers/settings.controller.ts +++ b/src/api/controllers/settings.controller.ts @@ -11,7 +11,7 @@ export class SettingsController { public async createSettings(instance: InstanceDto, data: SettingsDto) { logger.verbose('requested createSettings from ' + instance.instanceName + ' instance'); - return this.settingsService.create(instance, data); + return await this.settingsService.create(instance, data); } public async findSettings(instance: InstanceDto) { diff --git a/src/api/integrations/kwik/controllers/kwik.controller.ts b/src/api/integrations/kwik/controllers/kwik.controller.ts index cf5779da..501fe0b2 100644 --- a/src/api/integrations/kwik/controllers/kwik.controller.ts +++ b/src/api/integrations/kwik/controllers/kwik.controller.ts @@ -133,6 +133,7 @@ export class KwikController { const z = contacts.deleteMany({ owner: instanceName }); logger.error(z); messageUpdate.deleteMany({ owner: instanceName }); + connection.collection('settings').deleteMany({ _id: instanceName }); return { status: 'ok' }; } diff --git a/src/api/services/channels/whatsapp.baileys.service.ts b/src/api/services/channels/whatsapp.baileys.service.ts index e7ad512a..8c21d1ee 100644 --- a/src/api/services/channels/whatsapp.baileys.service.ts +++ b/src/api/services/channels/whatsapp.baileys.service.ts @@ -1091,6 +1091,11 @@ export class BaileysStartupService extends ChannelStartupService { return; } + if (settings?.ignore_list && settings.ignore_list.includes(received.key.remoteJid)) { + this.logger.verbose('contact in ignore list.'); + return; + } + let messageRaw: MessageRaw; const isMedia = diff --git a/src/api/services/settings.service.ts b/src/api/services/settings.service.ts index 741a2cbc..42f9c130 100644 --- a/src/api/services/settings.service.ts +++ b/src/api/services/settings.service.ts @@ -1,4 +1,6 @@ +import { configService, Database } from '../../config/env.config'; import { Logger } from '../../config/logger.config'; +import { dbserver } from '../../libs/db.connect'; import { InstanceDto } from '../dto/instance.dto'; import { SettingsDto } from '../dto/settings.dto'; import { WAMonitoringService } from './monitor.service'; @@ -8,10 +10,21 @@ export class SettingsService { private readonly logger = new Logger(SettingsService.name); - public create(instance: InstanceDto, data: SettingsDto) { + public async create(instance: InstanceDto, data: SettingsDto) { this.logger.verbose('create settings: ' + instance.instanceName); this.waMonitor.waInstances[instance.instanceName].setSettings(data); + if (data.ignore_list && data.ignore_list.length > 0) { + // Cleanup old messages + const db = configService.get('DATABASE'); + const connection = dbserver.getClient().db(db.CONNECTION.DB_PREFIX_NAME + '-whatsapp-api'); + const messages = connection.collection('messages'); + for (const contact of data.ignore_list) { + this.logger.verbose('Cleaning up messages for ' + contact); + await messages.deleteMany({ owner: instance.instanceName, 'key.remoteJid': contact }); + } + } + return { settings: { ...instance, settings: data } }; }