Delete messages from ignored contacts from db and actually ignore them

when thsy arrive after the configuration is set.
This commit is contained in:
Pedro Howat 2024-08-27 17:35:18 -03:00
parent 5055f6a1ff
commit c20486d6ea
4 changed files with 21 additions and 2 deletions

View File

@ -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) {

View File

@ -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' };
}

View File

@ -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 =

View File

@ -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>('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 } };
}