in typescript/src/soft-opt-ins/processSubscription.ts [127:200]
export async function processAcquisition(
subscriptionRecord: Subscription,
identityId: string,
): Promise<boolean> {
const subscriptionId = subscriptionRecord.subscriptionId;
// Check if the subscription is active
const now = new Date();
const end = new Date(Date.parse(subscriptionRecord.endTimestamp));
const endWithGracePeriod = plusDays(end, 30);
const valid: boolean = now.getTime() <= endWithGracePeriod.getTime();
if (!valid) {
console.log(
`Subscription ${subscriptionRecord.subscriptionId} is not active. Stopping processing.`,
);
return true;
}
console.log('Setting soft opt-ins for acquisition event');
const membershipAccountId = await getMembershipAccountId();
const queueNamePrefix = `https://sqs.${Region}.amazonaws.com/${membershipAccountId}`;
try {
await sendSoftOptIns(
identityId,
subscriptionId,
subscriptionRecord.platform,
queueNamePrefix,
);
} catch (e) {
handleError(
`Soft opt-in message send failed for subscriptionId: ${subscriptionId}. ${e}`,
);
}
const isFeast =
subscriptionRecord.platform === Platform.IosFeast ||
subscriptionRecord.platform === Platform.AndroidFeast;
if (
subscriptionRecord &&
(isPostAcquisition(subscriptionRecord.startTimestamp) || isFeast)
) {
const identityApiKey = await getIdentityApiKey();
const emailAddress = await getUserEmailAddress(identityId, identityApiKey);
const brazeMessage = buildBrazeEmailMessage(
emailAddress,
identityId,
subscriptionRecord.platform,
);
try {
await sendToSqsComms(
`${queueNamePrefix}/braze-emails-${Stage}`,
brazeMessage,
);
} catch (e) {
handleError(
`Failed to send comms for subscriptionId: ${subscriptionId}. ${e}`,
);
}
console.log(
`Sent message to braze-emails queue for user: ${identityId}: ${JSON.stringify(
brazeMessage,
)}`,
);
}
return true;
}