Skip to content

Commit

Permalink
#1921: add support for refreshing multi-step journeys via triggeredSends
Browse files Browse the repository at this point in the history
  • Loading branch information
JoernBerkefeld committed Dec 7, 2024
1 parent fb73d33 commit 4a29420
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 8 deletions.
2 changes: 1 addition & 1 deletion @types/lib/metadataTypes/Journey.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

76 changes: 72 additions & 4 deletions lib/metadataTypes/Journey.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import MetadataType from './MetadataType.js';
import TransactionalEmail from './TransactionalEmail.js';
import TriggeredSend from './TriggeredSend.js';
import Event from './Event.js';
import { Util } from '../util/util.js';
import cache from '../util/cache.js';
Expand Down Expand Up @@ -2612,9 +2613,74 @@ class Journey extends MetadataType {
}
break;
}
// case 'Multistep': {
// TODO
// }
case 'Multistep': {
// find all published & paused versions
const responseAllVersions = await this.client.rest.getBulk(
'/interaction/v1/interactions/?id=' +
journeyCache.metadata[key]?.id +
'&mostRecentVersionOnly=false',
this.definition.restPageSize || 500
);
if (responseAllVersions?.items?.length) {
const allActiveVersions = responseAllVersions.items
.filter(
(item) =>
item.status === 'Paused' || item.status === 'Published'
)
.map((item) => item.version);
if (allActiveVersions.length) {
Util.logger.info(
Util.getGrayMsg(
` - Paused/Published version: ` +
allActiveVersions.join(', ')
)
);
// get TS keys from email activities of paused/published versions
const rateLimitActivities = pLimit(2);
const tsKeys = (
await Promise.all(
allActiveVersions.map((version) =>
rateLimitActivities(async () => {
const journey = await this.client.rest.get(
'/interaction/v1/interactions/' +
journeyCache.metadata[key]?.id +
'?extras=activities&versionNumber=' +
version
);
// return all triggeredSends
return journey.activities
.filter(
(activity) =>
activity.type === 'EMAILV2' &&
activity.configurationArguments
?.triggeredSendKey
)
.map(
(activity) =>
activity.configurationArguments
?.triggeredSendKey
);
})
)
)
).flat();

// refresh TriggeredSends
TriggeredSend.buObject = this.buObject;
TriggeredSend.client = this.client;
TriggeredSend.properties = this.properties;
const refreshedTsKeys = await TriggeredSend.refresh(tsKeys);
if (refreshedTsKeys.length === tsKeys.length) {
refreshedKeyArr.push(key);
}
} else {
Util.logger.error(
` ☇ skipping refresh of ${this.definition.type} ${key}: no published/paused versions found`
);
}
}
break;
}
default: {
Util.logger.error(
` - Refreshing ${this.definition.type} ${key} / ${journeyCache.metadata[key].name} failed: Unsupported definitionType '${journeyCache.metadata[key].definitionType}'`
Expand All @@ -2624,7 +2690,9 @@ class Journey extends MetadataType {
})
)
);
Util.logger.info(`Refreshed ${refreshedKeyArr.length} of ${keyArr.length}`);
Util.logger.info(
`Refreshed ${refreshedKeyArr.length} of ${keyArr.length} ${this.definition.type}`
);
console.timeEnd('Time'); // eslint-disable-line no-console
return refreshedKeyArr;
}
Expand Down
6 changes: 3 additions & 3 deletions lib/metadataTypes/TriggeredSend.js
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,6 @@ class TriggeredSend extends MetadataType {
* @returns {Promise.<string[]>} Returns list of keys that were refreshed
*/
static async refresh(keyArr, checkKey = true) {
console.time('Time'); // eslint-disable-line no-console
if (!keyArr) {
keyArr = await this.getKeysForValidTSDs((await this.findRefreshableItems()).metadata);
checkKey = false;
Expand All @@ -327,8 +326,9 @@ class TriggeredSend extends MetadataType {
})
)
);
Util.logger.info(`Refreshed ${refreshedKeyArr.length} of ${keyArr.length}`);
console.timeEnd('Time'); // eslint-disable-line no-console
Util.logger.info(
`Refreshed ${refreshedKeyArr.length} of ${keyArr.length} ${this.definition.type}`
);
return refreshedKeyArr;
}

Expand Down

0 comments on commit 4a29420

Please sign in to comment.