Skip to content

Commit a0fa8ff

Browse files
additional improvements
1 parent 22f6cc6 commit a0fa8ff

File tree

2 files changed

+20
-28
lines changed

2 files changed

+20
-28
lines changed

components/gmail/sources/common/polling-messages.mjs

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,9 @@ export default {
77
...common.hooks,
88
async deploy() {
99
const messageIds = await this.getMessageIds(constants.HISTORICAL_EVENTS);
10-
if (!messageIds?.length) {
11-
return;
10+
if (messageIds.length) {
11+
await this.processHistoricalEvents(messageIds);
1212
}
13-
await this.processHistoricalEvents(messageIds);
1413
},
1514
async activate() {
1615
console.log(`Previous lastDate: ${this.getLastDate()}`);
@@ -24,7 +23,7 @@ export default {
2423
return this.db.get("lastDate");
2524
},
2625
setLastDate(lastDate) {
27-
this.db.set("lastDate", lastDate);
26+
this.db.set("lastDate", parseInt(lastDate));
2827
},
2928
constructQuery(lastDate) {
3029
const { q: query } = this;
@@ -44,19 +43,18 @@ export default {
4443
labelIds: this.getLabels(),
4544
maxResults: max,
4645
});
47-
return messages?.map((message) => message.id);
46+
return messages?.map((message) => message.id) ?? [];
4847
},
4948
async processMessageIds(messageIds, lastDate) {
5049
let maxDate = lastDate;
5150
const messages = this.gmail.getAllMessages(messageIds);
52-
console.log("Processing messages...");
5351
for await (const message of messages) {
54-
if (message.internalDate >= lastDate) {
55-
this.emitEvent(message);
56-
maxDate = Math.max(maxDate, message.internalDate);
57-
}
52+
this.emitEvent(message);
53+
maxDate = Math.max(maxDate, message.internalDate);
54+
}
55+
if (maxDate !== lastDate) {
56+
this.setLastDate(maxDate);
5857
}
59-
if (maxDate) this.setLastDate(maxDate);
6058
},
6159
async processHistoricalEvents(messageIds) {
6260
let messages = await this.gmail.getMessages(messageIds);
@@ -68,10 +66,11 @@ export default {
6866
async run() {
6967
const lastDate = this.getLastDate();
7068
const messageIds = await this.getMessageIds(constants.DEFAULT_LIMIT, lastDate);
71-
if (!messageIds?.length) {
69+
if (messageIds.length) {
70+
console.log(`Processing ${messageIds.length} message(s)...`);
71+
await this.processMessageIds(messageIds.reverse(), lastDate);
72+
} else {
7273
console.log("There are no new messages. Exiting...");
73-
return;
7474
}
75-
await this.processMessageIds(messageIds.reverse(), lastDate);
7675
},
7776
};

components/gmail/sources/new-attachment-received/new-attachment-received.mjs

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,20 +31,13 @@ export default {
3131
methods: {
3232
...common.methods,
3333
constructQuery(lastDate) {
34-
const { q: query } = this;
35-
const hasAttachment = query?.includes("has:attachment")
36-
? ""
37-
: "has:attachment";
38-
const after = !query?.includes("after:") && lastDate
39-
? `after:${Math.trunc(lastDate / 1000)}`
40-
: "";
41-
const q = [
42-
hasAttachment,
43-
after,
44-
query,
45-
].join(" ").trim();
46-
console.log(`Polling for new messages with query: ${q}`);
47-
return q;
34+
const hasAttachment = "has:attachment";
35+
if (!this.q) {
36+
this.q = hasAttachment;
37+
} else if (!this.q.includes(hasAttachment)) {
38+
this.q = `${this.q} ${hasAttachment}`;
39+
}
40+
return common.methods.constructQuery.call(this, lastDate);
4841
},
4942
getLabels() {
5043
return this.labels;

0 commit comments

Comments
 (0)