export async function processAcquisition()

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;
}