mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-19 11:01:15 +00:00
fix(Salesforce Trigger Node): Update polling logic to account for Salesforce processing delay (#19377)
This commit is contained in:
@@ -16,6 +16,8 @@ import {
|
||||
salesforceApiRequest,
|
||||
salesforceApiRequestAllItems,
|
||||
sortOptions,
|
||||
getPollStartDate,
|
||||
filterAndManageProcessedItems,
|
||||
} from './GenericFunctions';
|
||||
|
||||
export class SalesforceTrigger implements INodeType {
|
||||
@@ -185,7 +187,8 @@ export class SalesforceTrigger implements INodeType {
|
||||
};
|
||||
|
||||
async poll(this: IPollFunctions): Promise<INodeExecutionData[][] | null> {
|
||||
const workflowData = this.getWorkflowStaticData('node');
|
||||
const workflowData: { processedIds?: string[]; lastTimeChecked?: string } =
|
||||
this.getWorkflowStaticData('node');
|
||||
let responseData;
|
||||
const qs: IDataObject = {};
|
||||
const triggerOn = this.getNodeParameter('triggerOn') as string;
|
||||
@@ -196,11 +199,15 @@ export class SalesforceTrigger implements INodeType {
|
||||
triggerResource = this.getNodeParameter('customObject') as string;
|
||||
}
|
||||
|
||||
const now = DateTime.now().toISO();
|
||||
const startDate = (workflowData.lastTimeChecked as string) || now;
|
||||
const endDate = now;
|
||||
const endDate = DateTime.now().toISO();
|
||||
|
||||
if (!workflowData.processedIds) {
|
||||
workflowData.processedIds = [];
|
||||
}
|
||||
const processedIds = workflowData.processedIds;
|
||||
|
||||
try {
|
||||
const pollStartDate = startDate;
|
||||
const pollStartDate = getPollStartDate(workflowData.lastTimeChecked);
|
||||
const pollEndDate = endDate;
|
||||
|
||||
const options = {
|
||||
@@ -262,6 +269,20 @@ export class SalesforceTrigger implements INodeType {
|
||||
workflowData.lastTimeChecked = endDate;
|
||||
return null;
|
||||
}
|
||||
|
||||
const { newItems, updatedProcessedIds } = filterAndManageProcessedItems(
|
||||
responseData,
|
||||
processedIds,
|
||||
);
|
||||
|
||||
workflowData.processedIds = updatedProcessedIds;
|
||||
workflowData.lastTimeChecked = endDate;
|
||||
|
||||
if (newItems.length > 0) {
|
||||
return [this.helpers.returnJsonArray(newItems as IDataObject[])];
|
||||
}
|
||||
|
||||
return null;
|
||||
} catch (error) {
|
||||
if (this.getMode() === 'manual' || !workflowData.lastTimeChecked) {
|
||||
throw error;
|
||||
@@ -278,12 +299,5 @@ export class SalesforceTrigger implements INodeType {
|
||||
);
|
||||
throw error;
|
||||
}
|
||||
workflowData.lastTimeChecked = endDate;
|
||||
|
||||
if (Array.isArray(responseData) && responseData.length) {
|
||||
return [this.helpers.returnJsonArray(responseData as IDataObject[])];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user