FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
evolution-api/src/utils/onWhatsappCache.ts at main · EcDataNetwork/evolution-api · GitHub
EcDataNetwork
/
evolution-api
Public
forked from
evolution-foundation/evolution-api
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
evolution-api
/
src
/
utils
/
onWhatsappCache.ts
Copy path
More file actions
More file actions
Latest commit
History
History
History
100 lines (82 loc) · 3.13 KB
Breadcrumbs
evolution-api
/
src
/
utils
/
onWhatsappCache.ts
Copy path
File metadata and controls
100 lines (82 loc) · 3.13 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import
{
prismaRepository
}
from
'@api/server.module'
;
import
{
configService
,
Database
}
from
'@config/env.config'
;
import
dayjs
from
'dayjs'
;
function
getAvailableNumbers
(
remoteJid
:
string
)
{
const
numbersAvailable
:
string
[
]
=
[
]
;
if
(
remoteJid
.
startsWith
(
'+'
)
)
{
remoteJid
=
remoteJid
.
slice
(
1
)
;
}
const
[
number
,
domain
]
=
remoteJid
.
split
(
'@'
)
;
// Brazilian numbers
if
(
remoteJid
.
startsWith
(
'55'
)
)
{
const
numberWithDigit
=
number
.
slice
(
4
,
5
)
===
'9'
&&
number
.
length
===
13
?
number
:
`
${
number
.
slice
(
0
,
4
)
}
9
${
number
.
slice
(
4
)
}
`
;
const
numberWithoutDigit
=
number
.
length
===
12
?
number
:
number
.
slice
(
0
,
4
)
+
number
.
slice
(
5
)
;
numbersAvailable
.
push
(
numberWithDigit
)
;
numbersAvailable
.
push
(
numberWithoutDigit
)
;
}
// Mexican/Argentina numbers
// Ref: https://faq.whatsapp.com/1294841057948784
else
if
(
number
.
startsWith
(
'52'
)
||
number
.
startsWith
(
'54'
)
)
{
let
prefix
=
''
;
if
(
number
.
startsWith
(
'52'
)
)
{
prefix
=
'1'
;
}
if
(
number
.
startsWith
(
'54'
)
)
{
prefix
=
'9'
;
}
const
numberWithDigit
=
number
.
slice
(
2
,
3
)
===
prefix
&&
number
.
length
===
13
?
number
:
`
${
number
.
slice
(
0
,
2
)
}
${
prefix
}
${
number
.
slice
(
2
)
}
`
;
const
numberWithoutDigit
=
number
.
length
===
12
?
number
:
number
.
slice
(
0
,
2
)
+
number
.
slice
(
3
)
;
numbersAvailable
.
push
(
numberWithDigit
)
;
numbersAvailable
.
push
(
numberWithoutDigit
)
;
}
// Other countries
else
{
numbersAvailable
.
push
(
remoteJid
)
;
}
return
numbersAvailable
.
map
(
(
number
)
=>
`
${
number
}
@
${
domain
}
`
)
;
}
interface
ISaveOnWhatsappCacheParams
{
remoteJid
:
string
;
}
export
async
function
saveOnWhatsappCache
(
data
:
ISaveOnWhatsappCacheParams
[
]
)
{
if
(
configService
.
get
<
Database
>
(
'DATABASE'
)
.
SAVE_DATA
.
IS_ON_WHATSAPP
)
{
const
upsertsQuery
=
data
.
map
(
(
item
)
=>
{
const
remoteJid
=
item
.
remoteJid
.
startsWith
(
'+'
)
?
item
.
remoteJid
.
slice
(
1
)
:
item
.
remoteJid
;
const
numbersAvailable
=
getAvailableNumbers
(
remoteJid
)
;
return
prismaRepository
.
isOnWhatsapp
.
upsert
(
{
create
:
{
remoteJid
:
remoteJid
,
jidOptions
:
numbersAvailable
.
join
(
','
)
}
,
update
:
{
jidOptions
:
numbersAvailable
.
join
(
','
)
}
,
where
:
{
remoteJid
:
remoteJid
}
,
}
)
;
}
)
;
await
prismaRepository
.
$transaction
(
upsertsQuery
)
;
}
}
export
async
function
getOnWhatsappCache
(
remoteJids
:
string
[
]
)
{
let
results
:
{
remoteJid
:
string
;
number
:
string
;
jidOptions
:
string
[
]
;
}
[
]
=
[
]
;
if
(
configService
.
get
<
Database
>
(
'DATABASE'
)
.
SAVE_DATA
.
IS_ON_WHATSAPP
)
{
const
remoteJidsWithoutPlus
=
remoteJids
.
map
(
(
remoteJid
)
=>
getAvailableNumbers
(
remoteJid
)
)
.
flat
(
)
;
const
onWhatsappCache
=
await
prismaRepository
.
isOnWhatsapp
.
findMany
(
{
where
:
{
OR
:
remoteJidsWithoutPlus
.
map
(
(
remoteJid
)
=>
(
{
jidOptions
:
{
contains
:
remoteJid
}
}
)
)
,
updatedAt
:
{
gte
:
dayjs
(
)
.
subtract
(
configService
.
get
<
Database
>
(
'DATABASE'
)
.
SAVE_DATA
.
IS_ON_WHATSAPP_DAYS
,
'days'
)
.
toDate
(
)
,
}
,
}
,
}
)
;
results
=
onWhatsappCache
.
map
(
(
item
)
=>
(
{
remoteJid
:
item
.
remoteJid
,
number
:
item
.
remoteJid
.
split
(
'@'
)
[
0
]
,
jidOptions
:
item
.
jidOptions
.
split
(
','
)
,
}
)
)
;
}
return
results
;
}
Back
|
FazBrowse Home
|
New Git URL