Skip to content

Commit d8b8309

Browse files
committed
some adjusts
1 parent bc0fff1 commit d8b8309

File tree

4 files changed

+46
-50
lines changed

4 files changed

+46
-50
lines changed

components/wati/sources/common/base.mjs

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,8 @@ export default {
1313
},
1414
},
1515
methods: {
16-
getOpts() {
17-
return {};
18-
},
19-
filterItems() {
20-
() => true;
16+
prepareData(data) {
17+
return data;
2118
},
2219
_getLastDate() {
2320
return this.db.get("lastDate") || 0;
@@ -29,20 +26,16 @@ export default {
2926
const lastDate = this._getLastDate();
3027
const dateField = this.getDateField();
3128

32-
const response = this.wati.paginate({
33-
fn: this.getFunction(),
34-
...this.getOpts(),
35-
itemsField: this.getItemsField(),
36-
maxResults,
37-
});
29+
const response = this.wati.paginate(
30+
this.getPaginateOpts(maxResults),
31+
);
3832

3933
let responseArray = [];
4034
for await (const item of response) {
41-
if (this.checkBreak(item, lastDate)) break;
4235
responseArray.push(item);
4336
}
4437

45-
responseArray = responseArray.filter(this.filterItems);
38+
responseArray = this.prepareData(responseArray, lastDate, maxResults);
4639

4740
if (responseArray.length) {
4841
this._setLastDate(responseArray[0][dateField]);

components/wati/sources/new-contact-created/new-contact-created.mjs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,20 @@ export default {
1111
dedupe: "unique",
1212
methods: {
1313
...common.methods,
14+
getPaginateOpts(maxResults) {
15+
return {
16+
fn: this.wati.listContacts,
17+
itemsField: "result",
18+
optsField: "data",
19+
maxResults,
20+
};
21+
},
1422
getDateField() {
1523
return "created";
1624
},
17-
getItemsField() {
18-
return [
19-
"result",
20-
];
21-
},
2225
checkBreak(item, lastDate) {
2326
return Date.parse(item.created) < lastDate;
2427
},
25-
getFunction() {
26-
return this.wati.listContacts;
27-
},
2828
getSummary(item) {
2929
return `New contact created: ${item.wAid}`;
3030
},

components/wati/sources/new-incoming-message/new-incoming-message.mjs

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,29 +20,30 @@ export default {
2020
},
2121
methods: {
2222
...common.methods,
23-
getOpts() {
23+
getPaginateOpts() {
2424
return {
25+
fn: this.wati.listContactMessages,
2526
whatsappNumber: `+${this.contactId}`,
27+
itemsField: [
28+
"messages",
29+
],
30+
optsField: "params",
2631
};
2732
},
2833
getDateField() {
2934
return "timestamp";
3035
},
31-
getItemsField() {
32-
return [
33-
"messages",
34-
"items",
35-
];
36-
},
37-
filterItems(item) {
38-
return item.statusString === "SENT";
36+
prepareData(data, lastDate, maxResults) {
37+
data = data
38+
.filter((item) => item.statusString === "SENT" && Date.parse(item.created) > lastDate)
39+
.sort((a, b) => Date.parse(b.created) - Date.parse(a.created));
40+
41+
if (maxResults && data.length > maxResults) data.length = maxResults;
42+
return data;
3943
},
4044
checkBreak(item, lastDate) {
4145
return Date.parse(item.timestamp) < lastDate;
4246
},
43-
getFunction() {
44-
return this.wati.listContactMessages;
45-
},
4647
getSummary(item) {
4748
return `New message: ${item.text || "No content"}`;
4849
},

components/wati/wati.app.mjs

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@ export default {
99
label: "Contact Id",
1010
description: "The Id of the contact.",
1111
async options({ page }) {
12-
const { result } = await this.listContacts({
13-
params: {
14-
pageSize: page + 1,
12+
const { result: { items } } = await this.listContacts({
13+
data: {
14+
pageSize: 100,
15+
pageNumber: page,
1516
},
1617
});
1718

18-
return result.map(({ wAid }) => wAid);
19+
return items.map(({ wAid }) => wAid);
1920
},
2021
},
2122
whatsappNumber: {
@@ -63,6 +64,7 @@ export default {
6364
},
6465
listContacts(opts = {}) {
6566
return this._makeRequest({
67+
method: "POST",
6668
path: "/contacts",
6769
...opts,
6870
});
@@ -107,34 +109,34 @@ export default {
107109
});
108110
},
109111
async *paginate({
110-
fn, params = {}, itemsField, maxResults = null, ...opts
112+
fn, itemsField, optsField, maxResults = null, data = {}, params = {}, ...otherOpts
111113
}) {
112114
let hasMore = false;
113115
let count = 0;
114116
let page = 0;
115117

116-
do {
117-
params.pageNumber = ++page;
118-
const response = await fn({
119-
params,
120-
...opts,
121-
});
118+
const opts = {
119+
data,
120+
params,
121+
...otherOpts,
122+
};
122123

123-
let data = response;
124+
opts[optsField].pageSize = 100;
124125

125-
for (const field of itemsField) {
126-
data = data[field];
127-
}
126+
do {
127+
opts[optsField].pageNumber = page++;
128+
const response = await fn(opts);
129+
const items = response[itemsField].items;
128130

129-
for (const d of data) {
131+
for (const d of items) {
130132
yield d;
131133

132134
if (maxResults && ++count === maxResults) {
133135
return count;
134136
}
135137
}
136138

137-
hasMore = data.length;
139+
hasMore = items.length;
138140

139141
} while (hasMore);
140142
},

0 commit comments

Comments
 (0)