Skip to content

Commit 4e0a4fd

Browse files
arnav777devsayan-das-in
authored andcommitted
updated executePoll method to be accesible by integrations
1 parent f2cd013 commit 4e0a4fd

3 files changed

Lines changed: 26 additions & 14 deletions

File tree

packages/core/src/destination-kit/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -723,7 +723,7 @@ export class Destination<Settings = JSONObject, AudienceSettings = JSONObject> {
723723
return action.executeDynamicField(fieldKey, data, dynamicFn)
724724
}
725725

726-
public async executePollStatus(
726+
public async executePoll(
727727
actionSlug: string,
728728
{
729729
event,

packages/destination-actions/src/destinations/salesforce-marketing-cloud/asyncDataExtension/index.ts

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -108,20 +108,22 @@ const action: ActionDefinition<Settings, Payload, unknown, unknown, unknown, Pol
108108
const pollResult = await pollAsyncOperation(request, settings.subdomain, operationId)
109109

110110
// Map SFMC status to framework status
111+
// Check both requestStatus (Complete/InProcess/etc) and resultStatus (OK/Error)
111112
let status: 'pending' | 'completed' | 'failed'
112-
switch (pollResult.status) {
113-
case 'Complete':
114-
status = 'completed'
115-
break
116-
case 'Failed':
117-
case 'Error':
113+
const sfmcStatus = pollResult.results as any
114+
115+
if (pollResult.status === 'Complete') {
116+
// Request finished - check if it succeeded or had errors
117+
if (sfmcStatus?.hasErrors || sfmcStatus?.resultStatus === 'Error') {
118118
status = 'failed'
119-
break
120-
case 'InProcess':
121-
case 'Queued':
122-
default:
123-
status = 'pending'
124-
break
119+
} else {
120+
status = 'completed'
121+
}
122+
} else if (pollResult.status === 'Failed' || pollResult.status === 'Error') {
123+
status = 'failed'
124+
} else {
125+
// InProcess, Queued, etc.
126+
status = 'pending'
125127
}
126128

127129
const results = pollResult.results || {}

packages/destination-actions/src/destinations/salesforce-marketing-cloud/sfmc-operations.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,16 @@ export async function pollAsyncOperation(
109109
status: data.status.requestStatus,
110110
operationId: operationId,
111111
completedAt: data.status.completionDateTime,
112-
errorMessage: data.status.hasErrors ? 'Operation completed with errors' : undefined
112+
errorMessage: data.status.hasErrors ? 'Operation completed with errors' : undefined,
113+
results: {
114+
requestStatus: data.status.requestStatus,
115+
resultStatus: data.status.resultStatus,
116+
hasErrors: data.status.hasErrors,
117+
resultMessages: data.resultMessages || [],
118+
callDateTime: data.status.callDateTime,
119+
pickupDateTime: data.status.pickupDateTime,
120+
completionDateTime: data.status.completionDateTime
121+
}
113122
}
114123
} catch (error) {
115124
console.log('poll error', error)
@@ -162,6 +171,7 @@ export async function asyncUpsertRowsV2(
162171
json: { items: rows }
163172
}
164173
)
174+
console.log('no multistatsus')
165175
return response
166176
}
167177

0 commit comments

Comments
 (0)