diff --git a/packages/backend/src/apps/flickr/triggers/new-photos/index.ts b/packages/backend/src/apps/flickr/triggers/new-photos/index.ts index 7a7e6e94..371df5ff 100644 --- a/packages/backend/src/apps/flickr/triggers/new-photos/index.ts +++ b/packages/backend/src/apps/flickr/triggers/new-photos/index.ts @@ -6,7 +6,7 @@ export default defineTrigger({ pollInterval: 15, key: 'newPhoto', description: 'Triggers when you add a new photo.', - dedupeStrategy: 'unique', + dedupeStrategy: 'greatest', substeps: [ { key: 'chooseConnection', diff --git a/packages/backend/src/helpers/global-variable.ts b/packages/backend/src/helpers/global-variable.ts index 5ba1b1e3..69097354 100644 --- a/packages/backend/src/helpers/global-variable.ts +++ b/packages/backend/src/helpers/global-variable.ts @@ -87,16 +87,26 @@ const globalVariable = async ( beforeRequest: app.beforeRequest, }); - if (trigger && trigger.dedupeStrategy === 'unique') { - const lastInternalIds = testRun ? [] : await flow?.lastInternalIds(); + if (trigger) { + if (trigger.dedupeStrategy === 'unique') { + const lastInternalIds = testRun ? [] : await flow?.lastInternalIds(); - const isAlreadyProcessed = (internalId: string) => { - if (testRun) return false; + const isAlreadyProcessed = (internalId: string) => { + if (testRun) return false; - return lastInternalIds?.includes(internalId); - }; + return lastInternalIds?.includes(internalId); + }; - $.flow.isAlreadyProcessed = isAlreadyProcessed; + $.flow.isAlreadyProcessed = isAlreadyProcessed; + } else if (trigger.dedupeStrategy === 'greatest') { + const isAlreadyProcessed = (internalId: string) => { + if (testRun) return false; + + return Number(internalId) <= Number($.flow.lastInternalId); + }; + + $.flow.isAlreadyProcessed = isAlreadyProcessed; + } } return $;