fix(Gmail Trigger Node): Trigger node missing some emails

This commit is contained in:
Michael Kret
2022-12-05 16:12:26 +02:00
committed by GitHub
parent e07e32f14d
commit 67aad63343
2 changed files with 49 additions and 15 deletions

View File

@@ -194,8 +194,8 @@ export class GmailTrigger implements INodeType {
let responseData;
const now = Math.floor(DateTime.now().toSeconds()) + '';
const startDate = (webhookData.lastTimeChecked as string) || now;
const endDate = now;
const startDate = (webhookData.lastTimeChecked as string) || +now;
const endDate = +now;
const options = this.getNodeParameter('options', {}) as IDataObject;
const filters = this.getNodeParameter('filters', {}) as IDataObject;
@@ -273,7 +273,38 @@ export class GmailTrigger implements INodeType {
);
}
webhookData.lastTimeChecked = endDate;
const getEmailDateAsSeconds = (email: IDataObject) => {
const { internalDate, date } = email;
return internalDate
? +(internalDate as string) / 1000
: +DateTime.fromJSDate(new Date(date as string)).toSeconds();
};
const lastEmailDate = (responseData as IDataObject[]).reduce((lastDate, { json }) => {
const emailDate = getEmailDateAsSeconds(json as IDataObject);
return emailDate > lastDate ? emailDate : lastDate;
}, 0);
const nextPollPossibleDuplicates = (responseData as IDataObject[]).reduce(
(duplicates, { json }) => {
const emailDate = getEmailDateAsSeconds(json as IDataObject);
return emailDate === lastEmailDate
? duplicates.concat((json as IDataObject).id as string)
: duplicates;
},
[] as string[],
);
const possibleDuplicates = (webhookData.possibleDuplicates as string[]) || [];
if (possibleDuplicates.length) {
responseData = (responseData as IDataObject[]).filter(({ json }) => {
const { id } = json as IDataObject;
return !possibleDuplicates.includes(id as string);
});
}
webhookData.possibleDuplicates = nextPollPossibleDuplicates;
webhookData.lastTimeChecked = lastEmailDate || endDate;
if (Array.isArray(responseData) && responseData.length) {
return [responseData as INodeExecutionData[]];