fix: respect DATABASE_SAVE_DATA_CONTACTS in contact updates

This commit is contained in:
Gabriel Mouallem 2025-11-23 22:59:18 -03:00
parent df20c5fc93
commit 53a94af3f7

View File

@ -82,7 +82,7 @@ import { createId as cuid } from '@paralleldrive/cuid2';
import { Instance, Message } from '@prisma/client'; import { Instance, Message } from '@prisma/client';
import { createJid } from '@utils/createJid'; import { createJid } from '@utils/createJid';
import { fetchLatestWaWebVersion } from '@utils/fetchLatestWaWebVersion'; import { fetchLatestWaWebVersion } from '@utils/fetchLatestWaWebVersion';
import {makeProxyAgent, makeProxyAgentUndici} from '@utils/makeProxyAgent'; import { makeProxyAgent, makeProxyAgentUndici } from '@utils/makeProxyAgent';
import { getOnWhatsappCache, saveOnWhatsappCache } from '@utils/onWhatsappCache'; import { getOnWhatsappCache, saveOnWhatsappCache } from '@utils/onWhatsappCache';
import { status } from '@utils/renderStatus'; import { status } from '@utils/renderStatus';
import { sendTelemetry } from '@utils/sendTelemetry'; import { sendTelemetry } from '@utils/sendTelemetry';
@ -380,7 +380,7 @@ export class BaileysStartupService extends ChannelStartupService {
qrcodeTerminal.generate(qr, { small: true }, (qrcode) => qrcodeTerminal.generate(qr, { small: true }, (qrcode) =>
this.logger.log( this.logger.log(
`\n{ instance: ${this.instance.name} pairingCode: ${this.instance.qrcode.pairingCode}, qrcodeCount: ${this.instance.qrcode.count} }\n` + `\n{ instance: ${this.instance.name} pairingCode: ${this.instance.qrcode.pairingCode}, qrcodeCount: ${this.instance.qrcode.count} }\n` +
qrcode, qrcode,
), ),
); );
@ -839,10 +839,14 @@ export class BaileysStartupService extends ChannelStartupService {
this.sendDataWebhook(Events.CONTACTS_UPDATE, updatedContacts); this.sendDataWebhook(Events.CONTACTS_UPDATE, updatedContacts);
await Promise.all( await Promise.all(
updatedContacts.map(async (contact) => { updatedContacts.map(async (contact) => {
const update = this.prismaRepository.contact.updateMany({ let update;
where: { remoteJid: contact.remoteJid, instanceId: this.instanceId }, if (this.configService.get<Database>('DATABASE').SAVE_DATA.CONTACTS) {
data: { profilePicUrl: contact.profilePicUrl }, update = this.prismaRepository.contact.updateMany({
}); where: { remoteJid: contact.remoteJid, instanceId: this.instanceId },
data: { profilePicUrl: contact.profilePicUrl },
});
}
if (this.configService.get<Chatwoot>('CHATWOOT').ENABLED && this.localChatwoot?.enabled) { if (this.configService.get<Chatwoot>('CHATWOOT').ENABLED && this.localChatwoot?.enabled) {
const instance = { instanceName: this.instance.name, instanceId: this.instance.id }; const instance = { instanceName: this.instance.name, instanceId: this.instance.id };
@ -886,14 +890,17 @@ export class BaileysStartupService extends ChannelStartupService {
this.sendDataWebhook(Events.CONTACTS_UPDATE, contactsRaw); this.sendDataWebhook(Events.CONTACTS_UPDATE, contactsRaw);
const updateTransactions = contactsRaw.map((contact) => if (this.configService.get<Database>('DATABASE').SAVE_DATA.CONTACTS) {
this.prismaRepository.contact.upsert({ const updateTransactions = contactsRaw.map((contact) =>
where: { remoteJid_instanceId: { remoteJid: contact.remoteJid, instanceId: contact.instanceId } }, this.prismaRepository.contact.upsert({
create: contact, where: { remoteJid_instanceId: { remoteJid: contact.remoteJid, instanceId: contact.instanceId } },
update: contact, create: contact,
}), update: contact,
); }),
await this.prismaRepository.$transaction(updateTransactions); );
await this.prismaRepository.$transaction(updateTransactions);
}
//const usersContacts = contactsRaw.filter((c) => c.remoteJid.includes('@s.whatsapp')); //const usersContacts = contactsRaw.filter((c) => c.remoteJid.includes('@s.whatsapp'));
}, },
@ -975,16 +982,16 @@ export class BaileysStartupService extends ChannelStartupService {
const messagesRepository: Set<string> = new Set( const messagesRepository: Set<string> = new Set(
chatwootImport.getRepositoryMessagesCache(instance) ?? chatwootImport.getRepositoryMessagesCache(instance) ??
( (
await this.prismaRepository.message.findMany({ await this.prismaRepository.message.findMany({
select: { key: true }, select: { key: true },
where: { instanceId: this.instanceId }, where: { instanceId: this.instanceId },
}) })
).map((message) => { ).map((message) => {
const key = message.key as { id: string }; const key = message.key as { id: string };
return key.id; return key.id;
}), }),
); );
if (chatwootImport.getRepositoryMessagesCache(instance) === null) { if (chatwootImport.getRepositoryMessagesCache(instance) === null) {