(remoteJid: string)
| 6 | const logger = new Logger('OnWhatsappCache'); |
| 7 | |
| 8 | function getAvailableNumbers(remoteJid: string) { |
| 9 | const numbersAvailable: string[] = []; |
| 10 | |
| 11 | if (remoteJid.startsWith('+')) { |
| 12 | remoteJid = remoteJid.slice(1); |
| 13 | } |
| 14 | |
| 15 | const [number, domain] = remoteJid.split('@'); |
| 16 | |
| 17 | // TODO: Se já for @lid, retornar apenas ele mesmo SEM adicionar @domain novamente |
| 18 | if (domain === 'lid' || domain === 'g.us') { |
| 19 | return [remoteJid]; // Retorna direto para @lid e @g.us |
| 20 | } |
| 21 | |
| 22 | // Brazilian numbers |
| 23 | if (remoteJid.startsWith('55')) { |
| 24 | const numberWithDigit = |
| 25 | number.slice(4, 5) === '9' && number.length === 13 ? number : `${number.slice(0, 4)}9${number.slice(4)}`; |
| 26 | const numberWithoutDigit = number.length === 12 ? number : number.slice(0, 4) + number.slice(5); |
| 27 | |
| 28 | numbersAvailable.push(numberWithDigit); |
| 29 | numbersAvailable.push(numberWithoutDigit); |
| 30 | } |
| 31 | |
| 32 | // Mexican/Argentina numbers |
| 33 | // Ref: https://faq.whatsapp.com/1294841057948784 |
| 34 | else if (number.startsWith('52') || number.startsWith('54')) { |
| 35 | let prefix = ''; |
| 36 | if (number.startsWith('52')) { |
| 37 | prefix = '1'; |
| 38 | } |
| 39 | if (number.startsWith('54')) { |
| 40 | prefix = '9'; |
| 41 | } |
| 42 | |
| 43 | const numberWithDigit = |
| 44 | number.slice(2, 3) === prefix && number.length === 13 |
| 45 | ? number |
| 46 | : `${number.slice(0, 2)}${prefix}${number.slice(2)}`; |
| 47 | const numberWithoutDigit = number.length === 12 ? number : number.slice(0, 2) + number.slice(3); |
| 48 | |
| 49 | numbersAvailable.push(numberWithDigit); |
| 50 | numbersAvailable.push(numberWithoutDigit); |
| 51 | } |
| 52 | |
| 53 | // Other countries |
| 54 | else { |
| 55 | numbersAvailable.push(remoteJid); |
| 56 | } |
| 57 | |
| 58 | // TODO: Adiciona @domain apenas para números que não são @lid |
| 59 | return numbersAvailable.map((number) => `${number}@${domain}`); |
| 60 | } |
| 61 | |
| 62 | interface ISaveOnWhatsappCacheParams { |
| 63 | remoteJid: string; |
no outgoing calls
no test coverage detected