Skip to content

Commit c7bed04

Browse files
committed
Add labels property to ContactRaw model and update labels in LABELS_ASSOCIATION event
1 parent 23f1b4a commit c7bed04

File tree

2 files changed

+41
-12
lines changed

2 files changed

+41
-12
lines changed

src/whatsapp/models/contact.model.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export class ContactRaw {
88
id?: string;
99
profilePictureUrl?: string;
1010
owner: string;
11+
labels?: string[];
1112
}
1213

1314
type ContactRawBoolean<T> = {
@@ -21,6 +22,7 @@ const contactSchema = new Schema<ContactRaw>({
2122
id: { type: String, required: true, minlength: 1 },
2223
profilePictureUrl: { type: String, minlength: 1 },
2324
owner: { type: String, required: true, minlength: 1 },
25+
labels: { type: [String], default: [] },
2426
});
2527

2628
export const ContactModel = dbserver?.model(ContactRaw.name, contactSchema, 'contacts');

src/whatsapp/services/whatsapp.service.ts

Lines changed: 39 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2186,8 +2186,34 @@ export class WAStartupService {
21862186
}
21872187
},
21882188

2189-
[Events.LABELS_ASSOCIATION]: async (data: { association: LabelAssociation; type: 'remove' | 'add' }) => {
2189+
[Events.LABELS_ASSOCIATION]: async (
2190+
data: { association: LabelAssociation; type: 'remove' | 'add' },
2191+
database: Database,
2192+
) => {
21902193
this.logger.verbose('Sending data to webhook in event LABELS_ASSOCIATION');
2194+
2195+
// Atualiza labels no contato
2196+
const contact = await this.repository.contact.find({
2197+
where: {
2198+
owner: this.instance.name,
2199+
id: data.association.chatId,
2200+
},
2201+
});
2202+
if (contact.length > 0) {
2203+
let labels = [...contact[0].labels];
2204+
if (data.type === 'remove') {
2205+
labels = labels.filter((label) => label !== data.association.labelId);
2206+
} else if (data.type === 'add') {
2207+
labels = [...labels, data.association.labelId];
2208+
}
2209+
await this.repository.contact.update(
2210+
[{ ...contact[0], labels }],
2211+
this.instance.name,
2212+
database.SAVE_DATA.CONTACTS,
2213+
);
2214+
}
2215+
2216+
// Envia dados para o webhook
21912217
this.sendDataWebhook(Events.LABELS_ASSOCIATION, {
21922218
instance: this.instance.name,
21932219
type: data.type,
@@ -2333,18 +2359,19 @@ export class WAStartupService {
23332359
const payload = events['contacts.update'];
23342360
this.contactHandle['contacts.update'](payload, database);
23352361

2336-
if (events[Events.LABELS_ASSOCIATION]) {
2337-
this.logger.verbose('Listening event: labels.association');
2338-
const payload = events[Events.LABELS_ASSOCIATION];
2339-
this.labelHandle[Events.LABELS_ASSOCIATION](payload);
2340-
return;
2341-
}
2362+
if (events[Events.LABELS_ASSOCIATION]) {
2363+
this.logger.verbose('Listening event: labels.association');
2364+
const payload = events[Events.LABELS_ASSOCIATION];
2365+
this.labelHandle[Events.LABELS_ASSOCIATION](payload, database);
2366+
return;
2367+
}
23422368

2343-
if (events[Events.LABELS_EDIT]) {
2344-
this.logger.verbose('Listening event: labels.edit');
2345-
const payload = events[Events.LABELS_EDIT];
2346-
this.labelHandle[Events.LABELS_EDIT](payload, database);
2347-
return;
2369+
if (events[Events.LABELS_EDIT]) {
2370+
this.logger.verbose('Listening event: labels.edit');
2371+
const payload = events[Events.LABELS_EDIT];
2372+
this.labelHandle[Events.LABELS_EDIT](payload, database);
2373+
return;
2374+
}
23482375
}
23492376
}
23502377
});

0 commit comments

Comments
 (0)