Skip to content

Commit e2ab632

Browse files
style(chatwoot): fix lint violations
1 parent 08866c0 commit e2ab632

1 file changed

Lines changed: 69 additions & 73 deletions

File tree

src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts

Lines changed: 69 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -641,16 +641,16 @@ export class ChatwootService {
641641
const isLid = body.key.addressingMode === 'lid';
642642
const isGroup = body.key.remoteJid.endsWith('@g.us');
643643
let phoneNumber = isLid && !isGroup ? body.key.remoteJidAlt : body.key.remoteJid;
644-
let { remoteJid } = body.key;
644+
const { remoteJid } = body.key;
645645

646646
// CORREÇÃO LID: Resolve LID para número normal antes de processar
647647
if (isLid && !isGroup) {
648648
const resolvedPhone = await this.resolveLidToPhone(instance, body.key);
649-
649+
650650
if (resolvedPhone && resolvedPhone !== remoteJid) {
651651
this.logger.verbose(`LID detected and resolved: ${remoteJid}${resolvedPhone}`);
652652
phoneNumber = resolvedPhone;
653-
653+
654654
// Salva mapeamento se temos remoteJidAlt
655655
if (body.key.remoteJidAlt) {
656656
this.saveLidMapping(remoteJid, body.key.remoteJidAlt);
@@ -974,9 +974,7 @@ export class ChatwootService {
974974
const sourceReplyId = quotedMsg?.chatwootMessageId || null;
975975

976976
// Filtra valores null/undefined do content_attributes para evitar erro 406
977-
const filteredReplyToIds = Object.fromEntries(
978-
Object.entries(replyToIds).filter(([_, value]) => value != null)
979-
);
977+
const filteredReplyToIds = Object.fromEntries(Object.entries(replyToIds).filter(([, value]) => value != null));
980978

981979
// Monta o objeto data, incluindo content_attributes apenas se houver dados válidos
982980
const messageData: any = {
@@ -1132,9 +1130,7 @@ export class ChatwootService {
11321130
const replyToIds = await this.getReplyToIds(messageBody, instance);
11331131

11341132
// Filtra valores null/undefined antes de enviar
1135-
const filteredReplyToIds = Object.fromEntries(
1136-
Object.entries(replyToIds).filter(([_, value]) => value != null)
1137-
);
1133+
const filteredReplyToIds = Object.fromEntries(Object.entries(replyToIds).filter(([, value]) => value != null));
11381134

11391135
if (Object.keys(filteredReplyToIds).length > 0) {
11401136
const contentAttrs = JSON.stringify(filteredReplyToIds);
@@ -1841,32 +1837,32 @@ export class ChatwootService {
18411837
}
18421838

18431839
private getTypeMessage(msg: any) {
1844-
const types = {
1845-
conversation: msg.conversation,
1846-
imageMessage: msg.imageMessage?.caption,
1847-
videoMessage: msg.videoMessage?.caption,
1848-
extendedTextMessage: msg.extendedTextMessage?.text,
1849-
messageContextInfo: msg.messageContextInfo?.stanzaId,
1850-
stickerMessage: undefined,
1851-
documentMessage: msg.documentMessage?.caption,
1852-
documentWithCaptionMessage: msg.documentWithCaptionMessage?.message?.documentMessage?.caption,
1853-
audioMessage: msg.audioMessage ? (msg.audioMessage.caption ?? '') : undefined,
1854-
contactMessage: msg.contactMessage?.vcard,
1855-
contactsArrayMessage: msg.contactsArrayMessage,
1856-
locationMessage: msg.locationMessage,
1857-
liveLocationMessage: msg.liveLocationMessage,
1858-
listMessage: msg.listMessage,
1859-
listResponseMessage: msg.listResponseMessage,
1860-
orderMessage: msg.orderMessage,
1861-
quotedProductMessage: msg.contextInfo?.quotedMessage?.productMessage,
1862-
viewOnceMessageV2:
1863-
msg?.message?.viewOnceMessageV2?.message?.imageMessage?.url ||
1864-
msg?.message?.viewOnceMessageV2?.message?.videoMessage?.url ||
1865-
msg?.message?.viewOnceMessageV2?.message?.audioMessage?.url,
1866-
};
1867-
1868-
return types;
1869-
}
1840+
const types = {
1841+
conversation: msg.conversation,
1842+
imageMessage: msg.imageMessage?.caption,
1843+
videoMessage: msg.videoMessage?.caption,
1844+
extendedTextMessage: msg.extendedTextMessage?.text,
1845+
messageContextInfo: msg.messageContextInfo?.stanzaId,
1846+
stickerMessage: undefined,
1847+
documentMessage: msg.documentMessage?.caption,
1848+
documentWithCaptionMessage: msg.documentWithCaptionMessage?.message?.documentMessage?.caption,
1849+
audioMessage: msg.audioMessage ? (msg.audioMessage.caption ?? '') : undefined,
1850+
contactMessage: msg.contactMessage?.vcard,
1851+
contactsArrayMessage: msg.contactsArrayMessage,
1852+
locationMessage: msg.locationMessage,
1853+
liveLocationMessage: msg.liveLocationMessage,
1854+
listMessage: msg.listMessage,
1855+
listResponseMessage: msg.listResponseMessage,
1856+
orderMessage: msg.orderMessage,
1857+
quotedProductMessage: msg.contextInfo?.quotedMessage?.productMessage,
1858+
viewOnceMessageV2:
1859+
msg?.message?.viewOnceMessageV2?.message?.imageMessage?.url ||
1860+
msg?.message?.viewOnceMessageV2?.message?.videoMessage?.url ||
1861+
msg?.message?.viewOnceMessageV2?.message?.audioMessage?.url,
1862+
};
1863+
1864+
return types;
1865+
}
18701866

18711867
private getMessageContent(types: any) {
18721868
const typeKey = Object.keys(types).find((key) => types[key] !== undefined);
@@ -1894,39 +1890,39 @@ export class ChatwootService {
18941890
this.processedOrderIds.set(result.orderId, now);
18951891
}
18961892
// Tratamento de Produto citado (WhatsApp Desktop)
1897-
if (typeKey === 'quotedProductMessage' && result?.product) {
1898-
const product = result.product;
1899-
1900-
// Extrai preço
1901-
let rawPrice = 0;
1902-
const amount = product.priceAmount1000;
1903-
1904-
if (Long.isLong(amount)) {
1905-
rawPrice = amount.toNumber();
1906-
} else if (amount && typeof amount === 'object' && 'low' in amount) {
1907-
rawPrice = Long.fromValue(amount).toNumber();
1908-
} else if (typeof amount === 'number') {
1909-
rawPrice = amount;
1910-
}
1893+
if (typeKey === 'quotedProductMessage' && result?.product) {
1894+
const product = result.product;
19111895

1912-
const price = (rawPrice / 1000).toLocaleString('pt-BR', {
1913-
style: 'currency',
1914-
currency: product.currencyCode || 'BRL',
1915-
});
1916-
1917-
const productTitle = product.title || 'Produto do catálogo';
1918-
const productId = product.productId || 'N/A';
1919-
1920-
return (
1921-
`🛒 *PRODUTO DO CATÁLOGO (Desktop)*\n` +
1922-
`━━━━━━━━━━━━━━━━━━━━━\n` +
1923-
`📦 *Produto:* ${productTitle}\n` +
1924-
`💰 *Preço:* ${price}\n` +
1925-
`🆔 *Código:* ${productId}\n` +
1926-
`━━━━━━━━━━━━━━━━━━━━━\n` +
1927-
`_Cliente perguntou: "${types.conversation || 'Me envia este produto?'}"_`
1928-
);
1929-
}
1896+
// Extrai preço
1897+
let rawPrice = 0;
1898+
const amount = product.priceAmount1000;
1899+
1900+
if (Long.isLong(amount)) {
1901+
rawPrice = amount.toNumber();
1902+
} else if (amount && typeof amount === 'object' && 'low' in amount) {
1903+
rawPrice = Long.fromValue(amount).toNumber();
1904+
} else if (typeof amount === 'number') {
1905+
rawPrice = amount;
1906+
}
1907+
1908+
const price = (rawPrice / 1000).toLocaleString('pt-BR', {
1909+
style: 'currency',
1910+
currency: product.currencyCode || 'BRL',
1911+
});
1912+
1913+
const productTitle = product.title || 'Produto do catálogo';
1914+
const productId = product.productId || 'N/A';
1915+
1916+
return (
1917+
`🛒 *PRODUTO DO CATÁLOGO (Desktop)*\n` +
1918+
`━━━━━━━━━━━━━━━━━━━━━\n` +
1919+
`📦 *Produto:* ${productTitle}\n` +
1920+
`💰 *Preço:* ${price}\n` +
1921+
`🆔 *Código:* ${productId}\n` +
1922+
`━━━━━━━━━━━━━━━━━━━━━\n` +
1923+
`_Cliente perguntou: "${types.conversation || 'Me envia este produto?'}"_`
1924+
);
1925+
}
19301926
if (typeKey === 'orderMessage') {
19311927
// Extrai o valor - pode ser Long, objeto {low, high}, ou número direto
19321928
let rawPrice = 0;
@@ -2166,11 +2162,11 @@ if (typeKey === 'quotedProductMessage' && result?.product) {
21662162
if (body?.key?.remoteJid && body.key.remoteJid.includes('@lid') && !body.key.remoteJid.endsWith('@g.us')) {
21672163
const originalJid = body.key.remoteJid;
21682164
const resolvedPhone = await this.resolveLidToPhone(instance, body.key);
2169-
2165+
21702166
if (resolvedPhone && resolvedPhone !== originalJid) {
21712167
this.logger.verbose(`Event LID resolved: ${originalJid}${resolvedPhone}`);
21722168
body.key.remoteJid = resolvedPhone;
2173-
2169+
21742170
// Salva mapeamento se temos remoteJidAlt
21752171
if (body.key.remoteJidAlt) {
21762172
this.saveLidMapping(originalJid, body.key.remoteJidAlt);
@@ -2748,13 +2744,13 @@ if (typeKey === 'quotedProductMessage' && result?.product) {
27482744
if (!lid || !phoneNumber || !lid.includes('@lid')) {
27492745
return;
27502746
}
2751-
2747+
27522748
this.cleanLidCache();
27532749
this.lidToPhoneMap.set(lid, {
27542750
phone: phoneNumber,
27552751
timestamp: Date.now(),
27562752
});
2757-
2753+
27582754
this.logger.verbose(`LID mapping saved: ${lid}${phoneNumber}`);
27592755
}
27602756

@@ -2764,7 +2760,7 @@ if (typeKey === 'quotedProductMessage' && result?.product) {
27642760
*/
27652761
private async resolveLidToPhone(instance: InstanceDto, messageKey: any): Promise<string | null> {
27662762
const { remoteJid, remoteJidAlt } = messageKey;
2767-
2763+
27682764
// Se não for LID, retorna o próprio remoteJid
27692765
if (!remoteJid || !remoteJid.includes('@lid')) {
27702766
return remoteJid;
@@ -2788,7 +2784,7 @@ if (typeKey === 'quotedProductMessage' && result?.product) {
27882784
try {
27892785
const lidIdentifier = this.normalizeJidIdentifier(remoteJid);
27902786
const contact = await this.findContactByIdentifier(instance, lidIdentifier);
2791-
2787+
27922788
if (contact && contact.phone_number) {
27932789
// Converte +554498860240 → 554498860240@s.whatsapp.net
27942790
const phoneNumber = contact.phone_number.replace('+', '') + '@s.whatsapp.net';

0 commit comments

Comments
 (0)